728x90
1. 예외 발생 메서드(검증 대상)
public class DoSomething {
public static void func() {
throw new RuntimeException("some exception message...");
}
}
RuntimeException이 발생하는 메서드를 만들었다. 우리가 검증해야할 검증 대상이다.
2. 예외 테스트 코드 작성하기
위에서 작성한 "예외 발생 메서드가 예외를 잘 발생하는지"를 테스하는 코드를 4가지 방법으로 작성해볼 수 있다.
방법1. assertThrows: 예외 타입이 같은지 검사
import static org.junit.jupiter.api.Assertions.assertThrows;
@Test
public void junit5에서_exception_테스트_1() {
Assertions.assertThrows(RuntimeException.class, () -> {
DoSomething.func();
});
}
Assertions.assertThrows의 두 번째 인자인 DoSomething.func()를 실행하여 첫 번째 인자인 예외 타입과 같은지(혹은 캐스팅이 가능한 상속 관계의 예외인지) 검사합니다.
▶ assertThrows(Class<> classType, Executable executable)
executbale을 실행하여 예외가 발생할 경우, classType과 앞에서 발생한 exception이 같은 타입인지 비교
- 첫번째 인자: 발생할 예외 클래스의 Class 타입
방법 2. 예외 메시지 테스트 - assertEquals (try ~ catch): 예외 메시지가 같은지 검사
import static org.junit.jupiter.api.Assertions.assertThrows;
@Test
public void junit5에서_exception_테스트_3() {
try {
DoSomething.func();
} catch (RuntimeException e) {
assertThat(e.getMessage()).isEqualTo("some exception message...");
}
}
방법 3. 예외 메시지 테스트 - assertThrows 반환값 사용: 예외 메시지가 같은지 검사
@Test
public void junit5에서_exception_테스트_4() {
Throwable exception = assertThrows(RuntimeException.class, () -> {
DoSomething.func();
});
assertThat(exception.getMessage()).isEqualTo("some exception message...");
}
[참고] https://covenant.tistory.com/256
728x90
'Java > Java 학습' 카테고리의 다른 글
[JAVA] isEqualTo() vs isSameAs() vs isInstanceOf() 비교 (0) | 2022.05.17 |
---|---|
[JAVA] 성공 테스트 & 실패 테스트 (0) | 2022.05.16 |
[JAVA] JUnit5 기본 테스트 어노테이션(@Test, BeforeAll, @BeforeEach, @AfterAll, @AfterEach, @Disabled) (0) | 2022.04.28 |
[JAVA] UnitTest에서 사용하는 AssertJ의 AssertThat이란? (1) | 2022.04.28 |
[JAVA] Java8의 Optional이란? (0) | 2022.04.28 |