天天看點

Java中測試異常的多種方式

使用JUnit來測試Java代碼中的異常有很多種方式,你知道幾種?

給定這樣一個class。

Person.java

我們來測試setAge方法。

這是最容易想到的一種方式,但是太啰嗦。

JUnit中提供了一個<code>expected</code>的annotation來檢查異常。

這種方式看起來要簡潔多了,但是無法檢查異常中的消息。

JUnit7以後提供了一個叫做<code>ExpectedException</code>的Rule來實作對異常的測試。

這種方式既可以檢查異常類型,也可以驗證異常中的消息。

有個catch-exception庫也可以實作對異常的測試。

首先引用該庫。

pom.xml

然後這樣書寫測試。

這樣的好處是可以精準的驗證異常是被測方法抛出來的,而不是其它方法抛出來的。

catch-exception庫還提供了多種API來進行測試。

先加載fest-assertion庫。

然後可以書寫BDD風格的測試。

如果喜歡Hamcrest風格的驗證風格的話,catch-exception也提供了相應的Matcher API。

第一種最土鼈,第二種最簡潔,第四種最靠譜。