文章出處
Person.java
pom.xml
文章列表
使用JUnit來測試Java代碼中的異常有很多種方式,你知道幾種?
給定這樣一個class。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
我們來測試setAge方法。
Try-catch 方式
1 2 3 4 5 6 7 8 9 10 11 |
|
這是最容易想到的一種方式,但是太啰嗦。
JUnit annotation方式
JUnit中提供了一個expected
的annotation來檢查異常。
1 2 3 4 5 6 |
|
這種方式看起來要簡潔多了,但是無法檢查異常中的消息。
ExpectedException rule
JUnit7以后提供了一個叫做ExpectedException
的Rule來實現對異常的測試。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
這種方式既可以檢查異常類型,也可以驗證異常中的消息。
使用catch-exception庫
有個catch-exception庫也可以實現對異常的測試。
首先引用該庫。
1 2 3 4 5 6 |
|
然后這樣書寫測試。
1 2 3 4 5 6 7 8 |
|
這樣的好處是可以精準的驗證異常是被測方法拋出來的,而不是其它方法拋出來的。
catch-exception庫還提供了多種API來進行測試。
先加載fest-assertion庫。
1 2 3 4 5 |
|
然后可以書寫BDD風格的測試。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
如果喜歡Hamcrest風格的驗證風格的話,catch-exception也提供了相應的Matcher API。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
第一種最土鱉,第二種最簡潔,第四種最靠譜。
文章列表
全站熱搜