@WebMvcTest
Controller 단위테스트를 위해 @WebMvcTest 어노테이션을 이용해서 테스트하던 중 만난 오류.
단위테스트 코드를 처음 작성해보는지라 버전문제나 설정에 문제가 있는줄 알았지만, 문제는 부트스트랩 클래스에 있었다.
@SpringBootApplication
@EnableJpaAuditing //이게 문제의 원흉
public class RunApplication {
public static void main(String[] args) {
SpringApplication.run(RunApplication.class,args);
}
@Bean
public AuditorAware<String> auditorProvider(){
return ()-> Optional.of(UUID.randomUUID().toString());
}
}
이전에 Base Entity를 설정하면서 생성시간을 자동으로 할당하기 위해 @EnableJpaAuditing을 추가했었는데, @SpringBootApplication 클래스에 등록해놓은 것이 에러의 원인이었다.
부트스트랩 클래스에 설정해놓는 바람에 모든 테스트들이 JPA 관련 Bean을 필요로 하는 상황이었다.
이전까지는 @SpringBootTest로 통합테스트만 진행해서 모든 Bean을 주입받아 별 문제없이 실행되었지만, 단위 테스트는 JPA관련 Bean은 주입받지 않기 때문에 문제가 발생햇다.
@Configuration
@EnableJpaAuditing
public class SpringConfig {
EntityManager em ;
public SpringConfig(EntityManager em) {
this.em = em;
}
}
위와같이 간단하게 Config 클래스를 만들어 @EnableJpaAuditing 를 옮겨주기로 했다.
@WebMvcTest(OrderController.class)
public class OrderControllerTest {
@Autowired
MockMvc mvc;
@MockBean
OrderService orderService;
@MockBean
UserService userService;
//----중략---
728x90
'[IT] > SpringBoot' 카테고리의 다른 글
[Spring Boot] 설정파일 암호화 (application.yml) (0) | 2021.04.28 |
---|---|
[Spring Boot] Controller - Dto 유효성 검사 (0) | 2021.04.19 |
[Spring Boot] Junit5 테스트 순서 지정 (0) | 2021.04.18 |
[Data JPA & Query DSL] Repository의 구현클래스 선정 규칙 (0) | 2021.04.03 |
[Spring boot] Swagger 설정하기 (0) | 2021.02.20 |