【发布时间】:2010-09-14 11:09:33
【问题描述】:
如何以惯用方式使用 JUnit4 来测试某些代码是否引发异常?
虽然我当然可以这样做:
@Test
public void testFooThrowsIndexOutOfBoundsException() {
boolean thrown = false;
try {
foo.doStuff();
} catch (IndexOutOfBoundsException e) {
thrown = true;
}
assertTrue(thrown);
}
我记得有一个注解或一个 Assert.xyz 或 something 远不那么笨拙,而且在这类情况下更符合 JUnit 的精神。
【问题讨论】:
-
任何其他方法的问题在于,一旦抛出异常,它们总是会结束测试。另一方面,我仍然经常希望使用各种参数调用
org.mockito.Mockito.verify,以确保在引发异常之前发生某些事情(例如使用正确的参数调用记录器服务)。 -
您可以在 JUnit wiki 页面 github.com/junit-team/junit/wiki/Exception-testing 中查看如何进行异常测试
-
@ZeroOne - 为此,我将进行两种不同的测试 - 一种用于异常,另一种用于验证与您的模拟的交互。
-
有一种方法可以用 JUnit 5 做到这一点,我在下面更新了我的答案。
-
这是一个很好的例子,在 JUnit4 和 JUnit5 中 how assert that an exception is Thrown 它
标签: java exception junit junit4 assert