2011-02-14 27 views
16

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

这里是我的方法:

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

爱情条件拆除。使用它可以让我的硒浏览器打开以进行单元测试失败。 – AndyM 2013-06-07 01:13:01

回答

20

我是用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()方法内设置断点并查看它何时被命中。

+0

我没有放置任何标签,因为我需要它在每个场景之后被解雇...... – Vajda 2011-02-15 11:36:34

2

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