JUnit annotation方式
JUnit中提供了一個(gè)expected的annotation來(lái)檢查異常。
@Test(expected = IllegalArgumentException.class)
public void shouldGetExceptionWhenAgeLessThan0() {
Person person = new Person();
person.setAge(-1);
}
這種方式看起來(lái)要簡(jiǎn)潔多了,但是無(wú)法檢查異常中的消息。
ExpectedException rule
JUnit7以后提供了一個(gè)叫做ExpectedException的Rule來(lái)實(shí)現(xiàn)對(duì)異常的測(cè)試。
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void shouldGetExceptionWhenAgeLessThan0() {
Person person = new Person();
exception.expect(IllegalArgumentException.class);
exception.expectMessage(containsString("age is invalid"));
person.setAge(-1);
}
這種方式既可以檢查異常類(lèi)型,也可以驗(yàn)證異常中的消息。
使用catch-exception庫(kù)
有個(gè)catch-exception庫(kù)也可以實(shí)現(xiàn)對(duì)異常的測(cè)試。
首先引用該庫(kù)。
pom.xml
<dependency>
<groupId>com.googlecode.catch-exception</groupId>
<artifactId>catch-exception</artifactId>
<version>1.2.0</version>
<scope>test</scope> <!-- test scope to use it only in tests -->
</dependency>