對(duì)于使用驗(yàn)證Test Case方法中拋出的異常,我起初想到的是一種比較簡(jiǎn)單的方法,但是顯得比較繁瑣:











Google了一下,找到另外幾種更加方便的方法:1,使用Test注解中的expected字段判斷拋出異常的類型。2,使用ExpectedException的Rule注解。
個(gè)人偏好用Test注解中的expected字段,它先的更加簡(jiǎn)潔,不管讀起來(lái)還是寫起來(lái)都很方便,并且一目了然:









對(duì)Rule注解的使用(只有在JUnit4.7以后才有這個(gè)功能),它提供了更加強(qiáng)大的功能,它可以同時(shí)檢查異常類型以及異常消息內(nèi)容,這些內(nèi)容可以只包含其中的某些字符,ExpectedException還支持使用hamcrest中的Matcher,默認(rèn)使用IsInstanceOf和StringContains Matcher。在BlockJUnit4ClassRunner的實(shí)現(xiàn)中,每一個(gè)Test Case運(yùn)行時(shí)都會(huì)重新創(chuàng)建Test Class的實(shí)例,因而在使用ExpectedException這個(gè)Rule時(shí),不用擔(dān)心在多個(gè)Test Case之間相互影響的問(wèn)題:

















在stackoverflow中還有人提到了使用google-code中的catch-exception工程,今天沒(méi)時(shí)間看了,回去好好研究一下。地址是:http://code.google.com/p/catch-exception/