순간을 성실히, 화려함보단 꾸준함을

[JUnit] controller 테스트시 java.lang.IllegalStateException: Failed to load ApplicationContext 에러 본문

나의 개발 메모장

[JUnit] controller 테스트시 java.lang.IllegalStateException: Failed to load ApplicationContext 에러

폭발토끼 2023. 1. 13. 09:42

안녕하세요.
테스트 코드를 작성 중에 전에 만나지 못했던 에러를 만났었습니다.

java.lang.IllegalStateException: Failed to load ApplicationContext 인데요

MemberController 를 테스트 하고 싶은데 자꾸

No qualifying bean of type 'xxxx.xxxxx.article.ArticleService' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

이런 메세지가 뜨는겁니다. 대체 뭐지? 싶었습니다.
테스트를 시도하지 않았던 ArticleController 에 관한 내용이 에러메세지에서 의존성을 주입못받고 있다고 뜨니까요

답은 @WebMvcTest 에서 찾을 수 있었습니다.

컨트롤러를 테스트 하기 위해 class layer 에 @WebMvcTest 를 붙여주는데요, 이때 클래스명을 정의하지 않아서 발생했던 문제였습니다.
클래스명을 정의해주지 않으면 모든 컨트롤러가 스캔 대상이 되며 @MockBean 을 통해서 ArticleService 에 정의해주지 않았기 때문에 이런 에러가 발생했던 거 입니다.

@WebMvcTest(MemberController.class) 이렇게 정의해줌으로써 오류를 해결하였습니다.