2014-04-04 128 views
0

我正在使用NUnit爲一個知道如何將自己序列化爲XML的類寫一個測試。該類有很多屬性,因此即使使用新對象的默認狀態,由我測試的函數生成的XML片段也可能非常長。NUnit長字符串被截斷

當我在NUnit測試運行器中運行測試並且有意破壞了預期返回的XML時,測試運行器僅顯示從將該對象序列化爲XML的函數返回的期望和實際字符串的截斷版本。如:

MyProject.MyTests.CanCreateObjectAndEdit: 
    Expected string length 525 but was 1485. Strings differ at index 509. 
    Expected: "...ffer="False" IsThing="False" /></MyObject>" 
    But was: "...ffer="False" IsThing="False" /><MySubObject ItemID="60..." 
    --------------------------------------------^ 

有沒有什麼辦法讓NUnit的返回整個預期和實際字符串?我有NUnit 2.6.3(最新版本),我正在使用NUnit x86 GUI測試運行器。

我目前的解決辦法是建立一個控制檯應用程序,將代碼複製出來的考驗,運行它,並打印輸出到調試窗口,然後粘貼輸出回到我的測試。

回答

2

幾乎每個斷言方法(即Assert.AreEquals)取「消息」參數作爲第三個參數。

它僅在測試失敗時打印,旨在提供診斷測試失敗的有用信息。我認爲這正是你需要的。

希望它有幫助。

1

(隨着在下面的代碼中的任何轉錄錯誤道歉:我測試這在遠程計算機上,而不復制/粘貼)

我測試message參數由曼努埃爾的建議。

[Test] 
    public void LongTest() 
    { 
     string s1 = new string('.', 1000); 
     string s1 = new string('.', 500) + "+" + new string('.', 500); 
     Assert.That(s1, Is.EqualTo(s2)); 
    } 

,得到了同樣的結果在一個問題中: Truncated strings

改變Assert

 Assert.That(s1, Is.EqualTo(s2), s1 + "\r\n\r\n" + s2); 

改變了結果 Full strings, but not fully visible 這可能是比有用的少,特別是當提示顯示整個事情時。但是,您可以右鍵單擊GUI運行器中的該區域並複製它,並且確實將整個文本複製到剪貼板。