1. 문제 상황

아래와 같이 테스트 코드를 작성하고 test를 진행시켰을 때, 아래의 에러 문구를 맞닥뜨렸다.

2. 문제 분석

No ServletContext set 이해

원인 분석 (feat. GPT)

AppConfig가 웹 환경의 빈을 포함하고 있어, ServletContext가 필요한 상황이 발생.

ServletContext란?

이유: Run 시에 어딘가에서 WebMVC 관련된 설정을 로드하고 있어 ServletContext를 필요로 하게 됨

확인: 실제로 WebConfig 클래스에서 @EnableWebMvc를 등록해주고 있었고, 이 어노테이션을 주석처리하고 실행하면 테스트가 잘 돌아감. (+ 실제로 테스트 코드 디버깅 시, WebConfig 클래스 파일에 있는 빈들을 등록하고 있음을 확인)

image.png

@EnableWebMvc 주석 처리 시- 테스트 통과

image.png

3. 문제 해결: ServletContext 분리 또는 Mocking하기

방법: @WebAppConfiguration 어노테이션 추가

@WebAppConfiguration이란