📅  最后修改于: 2023-12-03 15:32:26.611000             🧑  作者: Mango
在编写Java单元测试时,经常需要测试一个方法是否能够正确地抛出一个异常。JUnit5框架提供了非常方便的方式来测试一个方法是否抛出了预期异常。
@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,可用于测试一个方法是否能够抛出预期的异常。此功能对于开发具有强健性和可靠性的代码至关重要。