2014-09-27 73 views
0

比方說,我有一個JUnit測試,如:尼斯模式失敗

Assert.assertTrue(complexResult.toString(), someMethod(in1, in2, complexResult) 

如果測試失敗,我的消息將是一個complexResult字符串之前測試的有趣的部分是在測試失敗後調用someMethod,而不是我的complexResult的字符串視圖。

難道還有比一個更好的辦法:

if (!someMethod(in1, in2, complexResult)) { 
    Assert.fail(complexResult.toString()); 
} 

+1

我三次看到你的文章沒有得到它。 'complexResult'聽起來像方法的「out」參數?爲什麼不讓它通過有問題的方法返回?總而言之,這聽起來像第三方很難理解(維護問題!)。 – qqilihq 2014-09-27 16:02:54

+0

如果你想顯示的值取決於'someMethod',那麼你需要調用'someMethod',不太清楚如何解決這個問題。 – 2014-09-27 16:03:17

回答

2
boolean result = someMethod(in1, in2, complexResult); 
assertTrue(complexResult.toString(), result); 
2

是的,只是預先評估斷言調用的參數。

boolean result = someMethod(in1, in2, complexResult); 
Assert.assertTrue(complexResult.toString(), result); 

這比失敗的方法更優雅。