订购BeforeScenario属性钩子的执行

时间:2014-03-12 16:45:52

标签: .net attributes hook specflow scenarios

我有一个带有一些标签的功能文件:

MyFeature.feature:

...
@RestoreDB
@SomeAction
Scenario outline: ...
...

和绑定cs文件:

MySteps.cs:

[Binding]
public class MySteps:
{
   [BeforeScenario("RestoreDB")]
   public void RestoreDB() { ... }

   [BeforeScenario("SomeAction")]
   public void SomeAction() { ... }
}

SpecFlow以无序序列执行BeforeScenario。

是否可以在SomeAction标记之前设置执行RestoreDB标记的顺序?

1 个答案:

答案 0 :(得分:1)

无法指定执行BeforeScenario挂钩的顺序。您可以在SpecFlow github网站here上看到有关此问题的讨论。

我可以理解为什么你可以使用BeforeScenario执行" RestoreDB"方法(例如设置系统进行测试),但我对恢复系统状态"时要小心。你在评论中提到的;究竟是什么"系统状态"?如果这个"系统状态"与您的数据库数据无关,那么我就会问您为什么要将它放在BeforeScenario中。

SpecFlow场景应该完整地执行一项功能。您应该在步骤中包含步骤,而不是在BeforeScenario中设置系统状态。如果在许多地方使用该步骤,您可以使用SpecFlow Background来实现此目的,而不是使用BeforeScenario挂钩。