2010-06-14 29 views
8

考慮下面的代碼:如何在循環中使用NUnit Assert時在錯誤消息中顯示更多信息?

[Test] 
public void WidgetTest() 
{ 
    foreach (Widget widget in widgets) 
    { 
     Assert.AreEqual(0, widget.SomeValue); 
    } 
} 

如果一個斷言失敗,我會得到類似下面的一個非常無益的錯誤信息:

1) Test Failure : WidgetTest.TestSomeValue 
    Expected: 0 
    But was: 1 

at WidgetTest.TestSomeValue() 

所以,問題是,我怎麼能讓NUnit顯示更有用的信息,比如窗口小部件的名稱,或循環的迭代等?即使是行號也會更有幫助,因爲這是以自動方式運行的,我希望能夠在不調試代碼的情況下發現失敗的斷言。

回答

13

可以使用,這需要消息以及過載:

Assert.AreEqual(0, widget.SomeValue, 
       "Widget " + widget + " should have SomeValue of 0"); 
+1

如果有來裝點他自動生成的消息,而不必從頭開始編寫自己的方式這將是很好。 – eddiewould 2016-09-07 01:51:36