Specflow的[AfterScenario]

时间:2011-02-14 11:16:24

标签: specflow

我已经在我的stepdefinition类中定义了[AfterScenario]绑定,并且具有将在每个场景之后执行的方法,但是由于某些原因这不起作用。 在每个场景之后都没有调用我的方法,所以excel在经过一些测试后仍保持打开状态 一些不成功的测试也没有日志。 为什么? 你有什么想法或建议吗?

这是我的方法:

[AfterScenario]        
public void AfterScenario()
{
    if (TestContext.CurrentContext.Result.State != TestState.Success) ErrorLog();
    excelDriver.Stop();
}

2 个答案:

答案 0 :(得分:23)

我第一次玩自己的BeforeScenario和AfterScenario。

我用@sometag标记了我的场景,然后使用我的AfterScenario()方法的属性使用相同的标签(没有'@'或at符号)作为参数,例如。

功能文件:

@sometag
Feature: Some feature or other
Here is my feature description
...
Scenario: Some scenario
...

活动档案:

[AfterScenario("sometag")]
public void AfterScenario()
{
    // stuff...
}

我不知道标记这样的东西是否是关键。也许没有标签AfterScenario()会一直开火,我没试过。

您可以尝试的另一件事是将VS附加到nunit-agent.exe进程,在AfterScenario()方法中设置断点并查看它何时被击中。

答案 1 :(得分:2)

如果您不希望为eaach和每个场景执行afterScenario(),那么标记这样的东西是关键,但是如果您希望它在所有场景之后运行,那么就不需要标记。