2017-06-29 110 views
0

我正在爲代碼生成器編寫單元測試,並且大多數測試都會比較跨越幾行的輸出與某些黃金輸出。目前,我將輸出與Assert.AreEqual(string, string)進行比較,其中顯示了第一個差異的上下文。NUnit斷言AreEqual字符串比較

不幸的是,這不是很有幫助。理想情況下,我想獲得輸出的差異。 這樣做的最好方法是什麼?我目前的計劃是將生成的代碼寫入文件,並調用DIFFTOOL env var(否則diff.exePATH,否則爲默認NUnit行爲)引用的可執行文件並用適當的消息調用Assert.Fail()

回答

2

通過指定.NoClip作爲EqualConstraint的修飾符,可以消除長字符串的限制。這需要你從舊Assert.AreEqual切換使用斷言的約束模型:

C# Assert.That(actual, Is.EqualTo(expected).NoClip);

這會給你兩個字符串的全部價值,但可能很難無需重新格式化閱讀。

我們一直對改善兩個長字符串之間差異的顯示感興趣。來做一個公關吧! :-)