我如何用JUnit4来测试一些代码抛出的异常?
虽然我当然可以做这样的事情。
@Test
public void testFooThrowsIndexOutOfBoundsException() {
boolean thrown = false;
try {
foo.doStuff();
} catch (IndexOutOfBoundsException e) {
thrown = true;
}
assertTrue(thrown);
}
我记得有一个注解或Assert.xyz或something,对于这类情况,它远没有那么笨重,也更符合JUnit的精神。
JUnit 4
有这方面的支持。
@Test(expected = IndexOutOfBoundsException.class)
public void testIndexOutOfBoundsException() {
ArrayList emptyList = new ArrayList();
Object o = emptyList.get(0);
}
参考:
这样吧。 捕获一个非常普通的异常,确保它能从捕获块中出来,然后断言该异常的类是你所期望的那样。 这个断言将在以下情况下失败:a) 异常的类型不对(例如,如果你得到一个空指针);b) 异常没有被抛出。
public void testFooThrowsIndexOutOfBoundsException() {
Throwable e = null;
try {
foo.doStuff();
} catch (Throwable ex) {
e = ex;
}
assertTrue(e instanceof IndexOutOfBoundsException);
}