21

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

这是我的方法:

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

2 回答 2

29

就在今天,我第一次自己玩了 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() 方法中设置断点并查看它何时被命中。

于 2011-02-15T04:08:02.363 回答
3

如果您不想为每个场景执行 afterScenario(),那么标记这样的内容是关键,但如果您希望它在所有场景之后运行,则无需标记。

于 2013-05-06T08:40:46.600 回答