Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- gradle
- 인텔리제이키맵 #이클립스키맵 #이클립스단축키
- gradle의존관계
- in-memory
- 의존성관계
- H2
- 의존트리
- 소스트리
- 슬리드
- RESTful
- h2:~/test
- maven
- test not found
- gradle관계
- REST API
- isequalto
- 의존관계
- 로컬브랜치삭제
- assertion
- assertThat
- localhost:8082
Archives
- Today
- Total
봄날의 로그
[JUnit5] assertThrows 예외 테스트 본문
assertThrows는 JUnit 5에서 예외를 테스트하는 표준 방식으로, 기존의 try-catch 방식보다 더 간결하고 효과적이다.
try-catch 구문대신 assertThrows 를 사용해보자
-> @Test(expected = IllegalStateException.class)는 Junit5부터 사용되지 않음
1. 메서드 시그니처
assertThrows(Class<T> expectedType, Executable executable, String message);
- expectedType: 발생할 것으로 예상되는 예외의 클래스 타입입니다.
- 여기서는 IllegalStateException.class를 전달하여 이 타입의 예외가 발생해야 함을 나타냅니다.
- executable: 예외가 발생할 것으로 예상되는 실행 가능한 코드 블록입니다.
- 람다 표현식(() -> { ... })으로 작성하며, 예외를 던지는 코드만 포함합니다.
- message: 테스트 실패 시 표시될 메시지(선택적).
- 예외가 발생하지 않거나 타입이 예상과 다를 경우 출력됩니다.
2. 동작 원리
assertThrows는 내부적으로 다음과 같은 절차를 거칩니다:
- executable 블록을 실행합니다.
- 실행 중 expectedType으로 전달된 예외가 발생하면, 성공으로 간주합니다.
- 만약 예외가 발생하지 않거나 예상한 타입의 예외가 아니면, 테스트는 실패하며 message가 출력됩니다.
assertThrows(IllegalStateException.class, () -> {
memberService.join(member2);
}, "예외가 발생해야 합니다.");
(1) IllegalStateException.class
- 여기서 예상된 예외 타입은 IllegalStateException입니다.
- memberService.join(member2) 호출 시 IllegalStateException이 발생하지 않으면 테스트는 실패합니다.
(2) () -> { memberService.join(member2); }
- 람다 표현식으로 실행할 코드를 전달합니다.
- 이 블록은 예외 발생 여부를 확인하기 위한 코드만 포함해야 하며, 불필요한 코드는 피해야 합니다.
(3) "예외가 발생해야 합니다."
- 이 메시지는 테스트가 실패할 경우 출력됩니다.
- 예를 들어, memberService.join(member2)가 예외를 던지지 않는다면 다음과 같은 메시지가 출력됩니다
org.opentest4j.AssertionFailedError: 예외가 발생해야 합니다.
'JUnit5' 카테고리의 다른 글
[JUnit5] @SpringBootTest와 @ExtendWith(SpringExtension.class) (0) | 2024.12.16 |
---|---|
[JUnit5] assertEquals 두 값이 같은지 확인 (0) | 2024.12.16 |