JUnit5
에서는 assertThrows
를 통해 Exception을 검증할 수 있습니다.
assertThrows의 parameter로 인수 2개를 줍니다.
Exception Type
Exception을 테스트하고자하는 메서드 호출
)@Test
public void whenExceptionThrown_thenAssertionSucceeds() {
Exception exception = assertThrows(NumberFormatException.class, () -> {
Integer.parseInt("1a");
});
String expectedMessage = "For input string";
String actualMessage = exception.getMessage();
assertTrue(actualMessage.contains(expectedMessage));
}
Exception의 message
로 assert 검증을 적용할 수 있습니다.중요한 점은 assertThrows의 첫 번째 인수로 부모 Exception
을 넘겨줘도 됩니다.
아래 샘플코드의 경우, 실제 호출되는 Exception은 NumberFormatException
이지만, NumberFormatException의 상위 Exception인 RuntimeException
을 첫 번째 인수로 사용해도 테스트는 성공합니다.
@Test
public void whenDerivedExceptionThrown_thenAssertionSucceds() {
Exception exception = assertThrows(RuntimeException.class, () -> {
Integer.parseInt("1a");
});
String expectedMessage = "For input string";
String actualMessage = exception.getMessage();
assertTrue(actualMessage.contains(expectedMessage));
}