gpt4 book ai didi

testing - SpecFlow - 多个 BeforeScenario 方法的排序

转载 作者:行者123 更新时间:2023-11-28 19:42:30 24 4
gpt4 key购买 nike

我对 SpecFlow 很感兴趣,我真的很喜欢它。

除了一些棘手的问题...例如功能和场景设置代码。

在一个名为 InfrastructureSteps.cs 的“通用”文件中,我有应该为每个场景运行的通用设置代码 - 所以我的方法看起来像这样:

[BeforeScenario]
public void SetupDbContext()
{
// define some basic stuff, set up a database transaction context etc.
}

这需要在每个场景之前运行,到目前为止,它运行良好。

但是现在,我在特定于测试的步骤文件中有两个场景,它们在运行之前也需要相当广泛的设置。所以我在 .feature 中用标签标记了他们的场景:

@needs_extra_setup
Scenario: .....
Given .....
When .....
Then ......

并实现了特定于测试的 BeforeScenario 设置方法:

[BeforeScenario("needs_extra_setup")]
public void DoExtraSetupForMyScenario()
{
// do stuff
}

它有效 - 它被调用 - 但它在 通用 [BeforeScenario] 方法被调用之前被调用 :-( 因此它失败了 - 东西正在设置因为通用设置方法不存在并导致我的代码失败。

那么在 SpecFlow 中有什么方法可以对 [BeforeScenario] 方法进行排序吗?或者我可以告诉特定的 [BeforeScenario] 方法首先执行“基本”[BeforeScenario] 方法,就像在覆盖方法中调用基本方法一样?

当然,我可以显式地调用“基础”[BeforeScenario] 方法 - 但这看起来有点像大锤方法......

有什么想法吗?想法?指针?

最佳答案

我很确定您可以(并且可能不应该)对场景的执行顺序进行排序。

但您可以使用其他一些 hooks例如 BeforeFeature,也许可以那样绕过它。

另一种方法是简单地使用一个标志来检查是否已在特定内容中设置一般内容,调用 SetupDbContext 方法(或者最好是 SetupDbContext 依次调用的方法)。

使用 ScenarioContext.Current字典来存储你的标志。

希望对你有帮助

关于testing - SpecFlow - 多个 BeforeScenario 方法的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11665042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com