반응형
Controller 테스트할 때 @SpringBootTest 보다는 @WebMvcTest 를 사용하면 조금 더 가벼운 테스트를 할 수 있다.
하지만 @WebMvcTest 는 @Component @Service @Repository 는 Scan 하지 않는다.
즉, 빈으로 등록되지 않는다는 것이다.
그렇기 때문에 Controller 테스트를 할 때 빈 등록이 안된다고 오류가 나거나 빈이 null 로 나오는 상황을 마주칠 수 있다.
이럴 때 사용할 수 있는 어노테이션이 @TestConfiguration 이다.
테스트 환경에서 필요한 빈들을 등록할 수 있도록 도와주는 어노테이션이다.
사용방법을 알아보도록 하겠다.
아래와같이 TestConfig.class 를 만들고 @TestConfiguration 어노테이션을 붙인다.
@TestConfiguration
public class TestConfig {
@Bean
public JWTGenerator jwtGenerator(){
return new JWTGenerator();
}
@Bean
public JWTAuthenticationProvider jwtAuthenticationProvider(JWTGenerator jwtGenerator) {
return new JWTAuthenticationProvider(jwtGenerator);
}
}
그 후 필요한 class에서 아래와 같이 작성해준다.
@ExtendWith({SpringExtension.class})
@Import({TestConfig.class})
public class ControllerTest {
@Autowired
JWTAuthenticationProvider jwtAuthenticationProvider;
}
위와같이 하면 정상적으로 빈이 등록되어 테스트를 할 수 있게된다.
반응형
'개발 > Spring' 카테고리의 다른 글
[Spring data mongodb] 몽고DB에서 시퀀스를 이용하기 (0) | 2021.04.29 |
---|---|
[Querydsl] SemanticException: right-hand operand of a binary operator was null (0) | 2021.04.12 |
[Spring Security] @WebMvcTest Error creating bean with name 'securityConfig' defined (0) | 2021.04.05 |
[Spring Security] Login 이 성공했을 때 후처리를 어떻게 할 수 있을까? (1) | 2021.04.03 |
[Spring Security] Spring Security Login 테스트코드 만들기 (0) | 2021.03.26 |
댓글