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]
明确地称之为“基础”方法——但这似乎有点像大锤方法......
有任何想法吗?想法?指针?