2013-07-29 109 views
3

我使用SpecFlow與編碼UI爲WPF應用程序創建自動化測試。編碼UI - 斷言繼續「失敗」

我有一個「然後」步驟內的多個斷言,其中幾個失敗。當斷言失敗時,測試用例失敗並停止執行。我希望我的測試用例繼續執行,直到執行結束,並且如果在執行過程中出現任何失敗的斷言時執行最後一步,我希望整個測試用例失敗。

我發現只有部分解決方案:

try 
{ 
    Assert.IsTrue(condition) 
} 
catch(AssertFailedException ex) 
{ 
    Console.WriteLine("Assert failed, continuing the run"); 
} 

在這種情況下執行,直到去年底,但經檢驗合格的情況下被標記。

謝謝!

回答

1

一種方法是添加聲明bool thisTestFailed並將其初始化爲false。內catch塊添加語句thisTestFailed = true;則接近測試的末尾添加代碼,如:

if (thisTestFailed) { 
    Assert.Fail("A suitable test failed message"); 
} 

另一種方法是一系列Assert...語句轉換成一系列if測試跟着一個Assert。有幾種方法可以做到這一點。一種方法是:

bool thisTestFailed = false; 
if (... the first assertion ...) { thisTestFailed = true; } 
if (... another assertion ...) { thisTestFailed = true; } 
if (... and another assertion ...) { thisTestFailed = true; } 
if (thisTestFailed) { 
    Assert.Fail("A suitable test failed message"); 
} 
+0

謝謝!很好的解決方法。 – LeeWay

3

ExceptionsList。每遇到一個異常,抓住它並將其放入列表中。

創建一個屬性爲AfterScenario的方法,看看列表是否包含異常。如果爲true,則用一條消息斷言一個失敗的例外列表。現在,您不會丟失有價值的異常信息,並且由於AfterScenario屬性的存在,異常的檢查始終發生在最後。

+0

非常好的主意,謝謝! – LeeWay