📜  如何断言抛出异常java(1)

📅  最后修改于: 2023-12-03 15:38:47.983000             🧑  作者: Mango

如何断言抛出异常 Java

在 Java 开发中,我们经常需要判断某个方法或代码块是否会抛出异常,以便进行后续处理。在这个过程中,如何断言抛出异常就成为了一个非常重要的问题。接下来,本文将介绍如何在 Java 中断言抛出异常。

方法一:使用 @Test(expected) 断言

当我们使用 JUnit 进行单元测试时,可以使用 @Test(expected) 断言来判断方法是否会抛出异常。具体使用方式如下:

@Test(expected = Exception.class)
public void testException() throws Exception {
    // 在这里写需要测试的代码,比如以下代码:
    throw new Exception();
}

上面的代码中,@Test(expected = Exception.class) 表示测试方法会抛出 Exception 异常。如果测试方法中的代码块抛出 Exception 异常,则测试通过。如果没有抛出异常或者抛出的不是 Exception 异常,则测试失败。

需要注意的是,@Test(expected) 只能用于测试方法抛出的异常类型和 expected 属性指定的异常类型相同或者是其子类。

方法二:使用 assertThat() 断言

除了 @Test(expected) 断言外,我们还可以使用 assertThat() 来判断方法是否会抛出异常。具体使用方式如下:

@Test
public void testExceptionWithAssertThat() {
    assertThrows(Exception.class, new Executable() {
        @Override
        public void execute() throws Throwable {
            // 在这里写需要测试的代码,比如以下代码:
            throw new Exception();
        }
    });
}

上面的代码中,assertThrows() 方法用于判断方法是否抛出指定的异常类型,如果抛出了,则测试成功。如果没有抛出异常或者抛出的不是指定的异常类型,则测试失败。

assertThrows() 方法的第一个参数表示期望抛出的异常类型,第二个参数为一个可执行的 Lambda 表达式,在其中写需要测试的代码块。

需要注意的是,assertThrows() 是 JUnit 5 中新增的 API,如果你使用的是较早的版本,则需要手动引入 junit-jupiter-api 依赖。

小结

以上就是如何断言抛出异常的两种方式。有了这些方法,我们就可以更方便地进行单元测试以及错误处理。无论是使用哪种方式,都要记得写清楚需要测试的代码块,并且指定正确的异常类型,这样才能让测试更加准确和有效。