ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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를 적용해서 해당 컴포넌트를 스캔하려는 방법을 써봤는데, 실패했다.

     

    지금 위에 방법이 가장 심플하고 좋은 것 같다.

     

    하지만 위에 링크에 들어가면 다양한 방법들이 나온다.

    반응형

    댓글

Designed by Tistory.