WebMvcTest EntityManager 에러

최준영·2022년 8월 5일
0

프로젝트 관련

목록 보기
5/6
post-custom-banner

WebMvcTest를 사용하여 컨트롤러 테스트를 작성하던 도중 다음의 에러를 맞이했다.

nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No qualifying bean of type 'javax.persistence.EntityManager' available

원인

  • Controller 테스트에서 왜 EntityManager를 필요로 하는지 이것저것 찾아보니 에러의 원인이 두가지였다.
  • 첫번째 원인은 아래와 같이 WebMvcConfigurer를 상속받는 AppConfigEntityManager를 필요로 하는 빈이 있기 때문이다. @WebMvcTest가 스캔하는 대상에 WebMvcConfigurer가 포함되어 있기 때문에 해당 빈을 분리해야 한다.
  • 두번째 원인은 Audit 기능을 위한 @EnableJpaAuditing@SpringBootApplication와 함께 호출하였기 때문이다. Spring 컨테이너를 요구하는 테스트는 XXXApplication 클래스가 항상 로드된다. 하지만 @WebMvcTest는 JPA 관련 빈을 로드하지 않기 때문에 @EnableJpaAuditing에서 에러가 발생한다.

해결

  • jpa와 관련된 설정을 담당하는 클래스를 별도로 만들어서 @EnableJpaAuditingEntityManger를 필요로 하는 빈을 몰아 넣었다.

참고자료

profile
do for me
post-custom-banner

0개의 댓글