我已经在我的stepdefinition类中定义了[AfterScenario]绑定,并且具有将在每个场景之后执行的方法,但是由于某些原因这不起作用。 在每个场景之后都没有调用我的方法,所以excel在经过一些测试后仍保持打开状态 一些不成功的测试也没有日志。 为什么? 你有什么想法或建议吗?
这是我的方法:
[AfterScenario]
public void AfterScenario()
{
if (TestContext.CurrentContext.Result.State != TestState.Success) ErrorLog();
excelDriver.Stop();
}
答案 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(),那么标记这样的东西是关键,但是如果您希望它在所有场景之后运行,那么就不需要标记。