Home 스프링 부트에서 이제는 @RunWith 보이지 않는 이유
Post
Cancel

스프링 부트에서 이제는 @RunWith 보이지 않는 이유

Junit5에서 import org.junit.Test / org.junit.runner.RunWith 문제 해결 방법

한 2~3년전 스프링부트 책을 보다보면 지금과는 코드가 달라서 난감한데 그중에서도 @RunWith가 있다. 주로 테스트 코드에서 사용하는 것인데 @RunWith이 무엇이고 이제는 어떻게 달라졌는지 보자

Junit4에서는 테스트의 러너(Runner)를 확장하는 방법으로 @RunWith 어노테이션에 커스텀 테스트 러너를 설정해주는 방법이 있다. 그래서 예전 스프링 강의와 코드를 살펴보면 테스트코드를 작성할 때 주로 @RunWith(SpringRunner.class) 같은 코드를 볼 수 있다.

img1 daumcdn

하지만 Junit5에서는 @RunWith가 아닌 Extension이라는 일관된 방법을 통해 테스트를 실행한다. 마찬가지로 @ExtendWith(MyExtension.class)처럼 구현체를 지정할 수 있는데 이때 달라진 점이 있다.

  • 메타 애노테이션을 지원한다. @ExtendWith(SpringExtension.class)를 생략
  • 여러번 중복 사용할 수 있다.
1
2
3
4
5
@SpringBootTest
@AutoConfigureMockMvc
class PostControllerTest {
...
}

위 코드에서는 @RunWith나 @ExtendWith가 없지만 사실 @ExtendWith(SpringExtension.class)를 가지고 있는것과 같다. @SpringBootTest가 이미 그 코드를 가지고 있기 때문

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.