我有一个带有一些标签的功能文件:
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标记的顺序?
答案 0 :(得分:1)
无法指定执行BeforeScenario挂钩的顺序。您可以在SpecFlow github网站here上看到有关此问题的讨论。
我可以理解为什么你可以使用BeforeScenario执行" RestoreDB"方法(例如设置系统进行测试),但我对恢复系统状态"时要小心。你在评论中提到的;究竟是什么"系统状态"?如果这个"系统状态"与您的数据库数据无关,那么我就会问您为什么要将它放在BeforeScenario中。
SpecFlow场景应该完整地执行一项功能。您应该在步骤中包含步骤,而不是在BeforeScenario中设置系统状态。如果在许多地方使用该步骤,您可以使用SpecFlow Background来实现此目的,而不是使用BeforeScenario挂钩。