我有以下代碼:如何使用Hamcrest來測試異常?
def f(String s) {
assert !s?.contains('.')
}
什麼Hamcrest匹配器可以用來測試斷言?我知道我可以使用try
/catch
塊,但我更喜歡將測試的圈複雜性保持爲1。
我有以下代碼:如何使用Hamcrest來測試異常?
def f(String s) {
assert !s?.contains('.')
}
什麼Hamcrest匹配器可以用來測試斷言?我知道我可以使用try
/catch
塊,但我更喜歡將測試的圈複雜性保持爲1。
編輯
如果你真的必須使用Hamcrest,你可以寫這樣的:
assertThat({ f('hi.ho') }, thrown(MyException))
您將需要ThrownMatcher.thrown(..)
匹配,我只是爲了好玩寫道。
請參閱Gist here。
但是在Groovy中,Hamcrest匹配器可以很容易地被更強大的結構所取代。
你可以,例如,使用GroovyTestCase要做到這一點:
shouldFail(MyException, { /* code expected to throw MyException*/ })
最後,如果你是認真的測試中使用斯波克:
http://code.google.com/p/spock/wiki/SpockBasics
例
when:
f 'something.something'
then:
thrown(TypeOfException)
我知道Spock,但由於約束不能用於測試。 –
我喜歡Hamcrest的答案,但是如果它是一個單獨的答案,會感覺更好,並對其進行檢查。 –
我同意,但我不認爲可以兩次刪除答案或答案......所以我剛剛編輯了第一個實際答案,並且我對Spock的建議仍然持續,所以答案內容仍然相同。 – Renato
檢查我寫的匹配器,在我的答案中查看編輯。 – Renato