2015-02-09 82 views
2

我使用NUnit通過控制檯運行器來驅動Selenium WebDriver測試。因爲這些是WebDriver測試(而不是標準的單元測試),所以測試可能由於外部原因而失敗,例如網頁超時。NUnit - 如何動態運行測試子集

我需要能夠自動重新運行任何失敗的測試,以查看測試是否因測試違規而失敗,或僅僅因爲測試因超時而失敗。

我已經將通過/失敗狀態記錄到數據庫中,我想要做的是在原始測試運行後立即自動重新運行任何失敗的測試。我當然可以手動執行此操作,但這需要自動測試的樂趣!

如何動態地告訴NUnit在代碼中運行一組測試? (我知道如何生成失敗測試的列表/數組,但不知道如何將該列表或測試數組傳遞給NUnit以重新運行。

回答

2

我對此做了一些研究。一個功能請求,但不會出來,直到NUnit 3.0被釋放。我也不認爲你可以動態執行任何失敗的測試,而無需自己編寫自定義屬性,但是,有一個名爲NUnit retry的項目給出了一點靈活性,Retry屬性可以幫助你萬一UI測試失敗,因爲外部的原因。它給你重試測試n數的時間的選項。

private static int run = 0; 

... 

[Test] 
[Retry(Times = 3, RequiredPassCount = 2)] 
public void One_Failure_On_Three_Should_Pass() 
{ 
    run++; 

    if (run == 1) 
    { 
     Assert.Fail(); 
    } 

    Assert.Pass(); 
} 

摘自here

+0

感謝您的想法,很遺憾,我無法讓NUnit重試爲我工作。我被卡在通過NuGet獲取,該包會安裝,但沒有DLL。 – 2015-02-17 15:44:53