본문 바로가기
스프링/JUnit

JUnit 테스트에서 ApplicationRunner 실행하지 않도록 설정하기

by 책 읽는 개발자_테드 2022. 1. 9.
반응형

ApplicationRunner는 스프링 애플리케이션을 시작할때, 어떠한 동작을 하기 위해 사용된다. 그런데 이러한 동작이 테스트 상황에서는 필요하지 않을 수 있다. 이럴 때, 어떻게 해당 로직을 제외하고 테스트를 진행할까?

 

가장 간단한 방법으로 @Profile 애노테이션을 사용하는 방법이 있다. 해당 애노테이션은 스프링 애플리케이션의 런타임 환경을 관리할 수 있도록 도와준다.

 

이제 방법을 알아보자. 아래와 같이 ApplicationRunner를 상속하는 클래스에 "test 라는 이름의 그룹을 활성화하지 않는다"라는 의미에

@Profile("!test") 애너테이션을 추가한다.

 

@Profile("!test")
@Component
public class SomeApplicationRunner implements ApplicationRunner {

   @Override
   public void run(ApplicationArguments args) throws Exception {
   }
}

 

다음으로 테스트 클래스로 이동하여 "test 프로파일을 사용한다는 의미"의 @ActiveProfiles("test") 애너테이션을 추가한다.


@ActiveProfiles("test")
@SpringBootTest
class SomeTest {
}

 

이제 더 이상 ApplicationRunner는 작동하지 않을 것이다.

 

 

추가적인 방법들:

https://www.baeldung.com/spring-junit-prevent-runner-beans-testing-execution

반응형

댓글