JUnit中對Exception的判斷

2021-09-23 20:02:23 字數 1330 閱讀 9958

說來慚愧,雖然之前已經看過junit的原始碼了,也寫了幾篇部落格,但是長時間不寫test case,今天想要寫拋exception相關的test case時,竟然不知道怎麼寫了。。。。。好記性不如爛筆頭,記下來先~~

對於使用驗證test case方法中丟擲的異常,我起初想到的是一種比較簡單的方法,但是顯得比較繁瑣:

public

void

testoldstyle() 

"expect illegalstateexception");

catch

(illegalstateexception e) 

google了一下,找到另外幾種更加方便的方法:1,使用test註解中的expected欄位判斷丟擲異常的型別。2,使用expectedexception的rule註解。

個人偏好用test註解中的expected欄位,它先的更加簡潔,不管讀起來還是寫起來都很方便,並且一目了然:

(expected 

=illegalstateexception.

class

)public

void

testthrowexception() 

(expected 

=illegalstateexception.

class

)public

void

testnotthrowexception() 

對rule註解的使用(只有在junit4.7以後才有這個功能),它提供了更加強大的功能,它可以同時檢查異常型別以及異常訊息內容,這些內容可以只包含其中的某些字元,expectedexception還支援使用hamcrest中的matcher,預設使用isinstanceof和stringcontains matcher。在blockjunit4classrunner的實現中,每乙個test case執行時都會重新建立test class的例項,因而在使用expectedexception這個rule時,不用擔心在多個test case之間相互影響的問題:

@rule

public

final

expectedexception expectedexception 

=expectedexception.none();

public

void

testthrowexceptionwithrule() 

public

void

testthrowexceptionandmessagewithrule() 

在stackoverflow中還有人提到了使用google-code中的catch-exception工程,今天沒時間看了,回去好好研究一下。位址是:

Junit中對double型別進行assert對比

在junit測試中使用到了將double型別的資料進行比較,但是出現以下錯誤 報錯資訊 the method assertequals double,double from the type assert is deprecated junit中沒有assertequals double,doubl...

junit中對異常測試的小結總結

junit中對異常測試的小結總結,有如下幾種方法 假設有如下的類 public class person 要進行測試,方法1 使用 expectedexception import static org.hamcrest.matchers.import static org.junit.assert...

Junit中對兩double型別值的比較

使用junit 4 測試正確性時出現以下錯誤 the method assertequals double,double from the type assert is deprecated 經查閱相關資料發現junit中沒有assertequals double,double 的方法,因為doub...