如何在 Java 中断言异常?

这可能是一个概念上愚蠢的问题,但它也可能不是,因为我仍然是一个学生,我想我应该没有问题。

想象一下,你有一个方法,如果给定某些条件,它将抛出一个NumberFormatException。我想写一个单元测试,看看异常是否正确。我怎样才能做到这一点?

附言:我正在使用JUnit来编写单元测试。

谢谢。


答案 1

正如其他海报所建议的那样,如果您使用的是 JUnit4,则可以使用以下注释:

@Test(expected=NumberFormatException.class);

但是,如果您使用的是较旧版本的 JUnit,或者您希望在同一测试方法中执行多个“异常”断言,则标准习语是:

try {
   formatNumber("notAnumber");
   fail("Expected NumberFormatException");
catch(NumberFormatException e) {
  // no-op (pass)
}

答案 2

假设您使用的是 JUnit 4,请在测试中以导致其引发异常的方式调用该方法,并使用 JUnit 注释

@Test(expected = NumberFormatException.class)

如果引发异常,测试将通过。


推荐