본문 바로가기
개발/Spring

[Spring] @TestConfiguration

by 상용최 2021. 4. 9.
반응형

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;
}

 

위와같이 하면 정상적으로 빈이 등록되어 테스트를 할 수 있게된다.

반응형

댓글