2011-02-14 66 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(),但是如果您希望它在所有場景之後運行,那麼標記這樣的東西就非常關鍵,因此無需標記。