반응형
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
반응형
'스프링 > JUnit' 카테고리의 다른 글
JUnit의 @BeforeAll(@Before)대신 생성자를 사용해도 괜찮지 않을까? (0) | 2021.12.23 |
---|---|
Mockito란? Mockito 사용하기 (3) | 2021.11.15 |
[Junit] AssertJ란? (0) | 2021.10.30 |
[JUnit] 오류 해결: java.lang.IllegalStateException: Failed to load ApplicationContext (0) | 2021.08.10 |
[Junit] MockMvc 객체란? (0) | 2021.04.29 |
댓글