2013-11-27 57 views
3

在junit類中,我想測試是否引發了異常,如果不是,請提供解釋性消息,指出如果測試失敗應查找哪些內容。所以,像...Junit ExpectedException失敗並帶有解釋性消息

thrown.expect(UnsupportedOperationException.class); 
    thrown.expectMessage("an exception message"); 
    thrown.failureMessage("This method should not be called directly. Be sure to use a subclass or mock that implements the method foo()"); 

顯然,有沒有這樣的方法failureMessage()。我不能成爲世界上唯一一個想要實施失敗信息的人。我沒有在我的搜索中的任何地方找到示例。

請注意,這是參考Junit4 @Rule和ExpectedException功能。

回答

2

JUnit 4.12支持自定義失敗消息(請參閱release notes)。如果您的測試未引發預期的異常,則使用此故障消息。 Hamcrest匹配器處理其他所有錯誤消息。

JUnit 4.12於2014-12-04發佈。

1

你可以使用自定義Matcher,子類BaseMatcher覆蓋toString()做你想做的。

+0

謝謝,凱文。我想,我將不得不深入編寫自己的自定義匹配器。我希望避免這種情況。我不會把這個標記爲幾天的正確答案,只是爲了確保別人沒有采用不同的解決方案。 –