https://github.com/MinWoo1995/spring-unit-test
1. 오늘의 문제 상황 (Issue)
상황: Spring Boot 통합 테스트 중 mockMvc.perform() 코드에 파란색 밑줄이 생기며 테스트가 실패함.
증상: 서비스 레이어에서 던진 IllegalArgumentException이 핸들링되지 않고 서블릿 컨테이너까지 전달되어 500 에러성 예외로 터짐.
오해: 인텔리제이의 최신 기능(Inlay Hints)이 코드 위에 에러 로그를 띄워주어 컴파일 에러(빨간불)로 착각했으나, 실제로는 실행 결과 피드백이었음.
2. 해결 방법 (Resolution)
전역 예외 처리 (Global Exception Handling):
GlobalExceptionHandler를 생성하고 @RestControllerAdvice를 적용.
IllegalArgumentException 발생 시 400 Bad Request와 에러 메시지를 반환하도록 로직 구현.
테스트 코드 보완:
호출 결과가 에러라도 시스템이 죽는 게 아니라, 의도한 상태 코드(status().isBadRequest())가 오는지 확인하여 테스트 통과.
3. 학습 내용: 단위 테스트 vs 통합 테스트
통합 테스트 (Integration Test):
@SpringBootTest, @AutoConfigureMockMvc 사용.
API부터 DB까지 전체 흐름을 검증. 오늘 주문 생성 및 상세 조회 실패 케이스 검증 완료.
단위 테스트 (Unit Test):
@ExtendWith(MockitoExtension.class) 사용.
외부 의존성(DB 등)을 @Mock으로 대체하여 서비스 로직만 고립시켜 빠르게 검증. OrderService의 예외 발생 로직 검증 완료.
'spring_2기[본캠프] > 과제' 카테고리의 다른 글
| [과제]CH 5 플러스 Spring 과제 (0) | 2026.03.03 |
|---|---|
| [플러스] 챕터1 QueryDSL (0) | 2026.02.25 |
| [과제] 결제 시스템 Day9 (0) | 2026.02.20 |
| [과제] 결제 시스템 Day8 (0) | 2026.02.19 |
| [과제] 결제 시스템 Day7 (0) | 2026.02.13 |