我正在使用SpecFlow和C#来运行某些BDD测试方案。我已经定义了一个方案大纲,并且需要一个在每个方案大纲示例之后运行的方法。该方法上存在属性[AfterScenario]。但是,我可以看到[AfterScenario]方法在每个方案大纲示例之后执行两次。
不知道它是否有任何区别,但是有一次我错误地在另一个类中使用了相同的[AfterScenario]方法,并且两个都运行了。但是,我删除了其中一个并重建了项目。也许什么东西留在某个地方?
我已经看到一些例子,人们抱怨AfterScenario和BeforeScenario挂钩运行两次,但这就是标记存在的时候。我没有使用任何标签。
答案 0 :(得分:0)
[AfterScenario("scenarioTagName")]
。如果不使用标签,则具有[AfterScenario]属性的方法将在每个方案之后执行。当然,在某些情况下,您可能会使用不带标签的[AfterScenario]属性,但是据我所知,您不希望每个具有[AfterScenario]属性的方法都在每个场景执行后都执行。[Binding]
属性即可。通过将[Binding]属性分配给类,使specFlow能够在后台执行机制。如果您想将标记添加到方案大纲中,请在.feature文件中尝试以下操作:
@scenarioTagName
Scenario Outline:...
答案 1 :(得分:0)
也许您正在调用您的方法,该方法以其他方法存在于After Scenario中。我认为您尚未清除所有可以调用的地方。