📜  junit 5 预期异常 - Java (1)

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

JUnit 5预期异常 - Java

在编写Java单元测试时,经常需要测试一个方法是否能够正确地抛出一个异常。JUnit5框架提供了非常方便的方式来测试一个方法是否抛出了预期异常。

@Test注解上添加@org.junit.jupiter.api.Assertions类的方法
@Test
public void testException() {
    Assertions.assertThrows(ExpectedException.class, () -> {
        // test your code here that should throw the exception
    });
}

Assertions.assertThrows()方法接收两个参数:期望的异常类型和一个Java 8的Lambda表达式,它将调用你的代码来引发该异常。如果代码在此过程中未引发异常,则测试失败。

此方法的返回值是抛出的异常,可以对其进一步进行断言。

自定义异常消息
@Test
public void testCustomizedMessage() {
    Throwable exception = Assertions.assertThrows(
            ExpectedException.class,
            () -> {
                // test your code here that should throw the exception
                throw new ExpectedException("This is a customized message.");
            }
    );
 
    Assertions.assertEquals("This is a customized message.", exception.getMessage());
}

assertThrows()方法之后,我们断言抛出的异常的消息与我们自定义的消息相等。这在调试代码时非常有用,因为它允许你快速了解发生了什么情况。

测试多个方法
@Test
public void testMultipleExceptions() {
    Assertions.assertThrows(NullPointerException.class, () -> {
        // test your code here that should throw a NullPointerException
    });
 
    Assertions.assertThrows(IllegalArgumentException.class, () -> {
        // test your code here that should throw an IllegalArgumentException
    });
}

如果需要测试多个异常类型,可以在同一个测试方法中使用多个assertThrows()语句。如果测试代码中的两个语句都抛出了异常,则测试成功。如果没有抛出任何异常,则测试失败。

总结

JUnit5的assertThrows()方法允许程序员高效地测试方法的异常处理逻辑。它提供了一个简单的API,可用于测试一个方法是否能够抛出预期的异常。此功能对于开发具有强健性和可靠性的代码至关重要。