1

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

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 标记?

4

1 回答 1

1

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

我可以理解您为什么可以使用 BeforeScenario 来执行“RestoreDB”方法(例如为测试设置系统),但是我会警惕您在评论中提到的恢复“系统状态”;这个“系统状态”到底是什么?如果此“系统状态”与您的数据库数据无关,那么我会质疑您为什么将其放在 BeforeScenario 中。

SpecFlow 场景应该完整地执行一个功能。而不是在 BeforeScenario 中设置系统状态,您应该将这些步骤作为场景的一部分包含在内。如果在许多地方都使用了该步骤,则可以使用 SpecFlow背景来实现此目的,而不是使用 BeforeScenario 挂钩。

于 2014-03-12T23:33:58.640 回答