-
Spring Boot 테스트코드 동작시 CommandLineRunner 중복 문제프로그래밍/Spring Boot 2023. 1. 9. 22:54반응형
Spring Boot 에서 테스트코드를 작성하다가 다음과 같은 문제가 발생했다.
테스트 코드 내, @SpringBootTest, @ContextConfiguration 을 사용하여, 테스트코드를 작성해야하는 상황이 생겼는데,
이때 CommandLineRunner의 구현체를 만들어서 @Component 와 함께 사용하는 코드들이 있었다.
이 코드들을 그대로 다 @Component 를 주석처리 해주기에는 너무 부담이였다.
그래서 자료를 찾아봤는데 다음과 같은 레퍼런스를 찾을 수 있었다.
https://www.baeldung.com/spring-junit-prevent-runner-beans-testing-execution
방법은 간단하다, CommandLineRunner의 구현체 부분에, @Profile("!test") 를 붙이고, 테스트코드 부분에 @ActiveProfile 을 붙여, 현재 활성화된 프로필을 정의해주고, 해당 프로필이 아닌 경우에만 해당 클래스를 컴포넌트스캔이 되도록 하는 방식이다.
요러한 느낌이 아닐까 싶다.
현재 프로필을 정의하면, @ContextConfiguration 를 통해 컴포넌트 스캔을 진행하고 진행 할 때, 설정한 프로필이 아닐 때만 하위 코드를 실행하는 @Profile 어노테이션을 만나면 회피하고 다음 컴포넌트를 탐색하는 방식이 아닐까 싶다.
이 외에 다양하게 새로운 컴포넌트스캔을 구성하고, 해당 새로 구성된 컴포넌트스캔 클래스에 exlcudeFilter를 적용해서 해당 컴포넌트를 스캔하려는 방법을 써봤는데, 실패했다.
지금 위에 방법이 가장 심플하고 좋은 것 같다.
하지만 위에 링크에 들어가면 다양한 방법들이 나온다.
반응형