JUnit5... Runwith 변경사항
최근 여러강의를 듣거나 책을 읽다보면 대부분의 강의나 책에서 다루는 테스트에서는 Runwith 어노테이션을 사용하고 있음을 알 수 있다. 그러한 강의를 따라하다보면 제대로 테스트 코드가 작동하지 않음을 알 수있는데 Runwith어노테이션을 사용할 수 없기 때문에 발생하는 경우들이 있을 것이다.
그 이유는 아마 새롭게 프로젝트를 만들고 진행하다가 JUnit5를 설치하거나 의도적으로 JUnit5를 사용하려고 했기 때문일 것이다.
그렇다면 Runwith는 무엇이고 왜사용했으며 어떠한 어노테이션으로 대체되고 JUnit5에서는 왜 사용하지 않게 된 것인지에 대해서 알아 보도록 하겠다.
Runwith란?
Runwith어노테이션은 스프링 프로젝트의 테스트 실행 방법을 확장하고자 할때 사용되는 어노테이션으로 ApplicationContext를 만들고 관리하는 작업을 @RunWith에 설정된 class를 이용하겠다는 뜻이다.
JUnit5에서 @Runwith를 사용할 수 없는 이유?
우선 Junit5는 크게 3개의 서브프로젝트로 구성된 복수의 모듈로 구성. 그리고 각각 프로젝트 또한 용도에 따라 여러개의 서브 모듈로 구성되어있음.
- JUnit Platform : JUnit테스트를 실행하기 위한 기반이 되는 모듈. TestEngine을 구현한 모듈을 찾아서 실행
- JUnit Jupiter : 테스트를 기술하기 위한 프로그램. 확장모델들이 담겨있는 모듈(TestEngine API 구현체)
- JUnit Vintage : JUnit의 4, 3버전을 실행하기위한 TestEngine을 제공하는 모듈
@Runwith → @ExtendWith
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringTestConfiguration.class })
public class GreetingsSpringTest {
// ...
}
@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = { SpringTestConfiguration.class })
public class GreetingsSpringTest {
// ...
}
SpringExtension은 Spring5부터 제공되며 Spring TestContext 프레임워크를 JUnit5에 통합하였고, @Extentsion인터페이스를 구현하는 모든 클래스를 허용하게 됩니다.
'프레임워크 > 스프링&스프링부트' 카테고리의 다른 글
오류해결::Dependency 'org.springframework.boot:spring-boot-starter-web:2.3.0.RELEASE' not found (0) | 2023.01.26 |
---|---|
Spring&SpringBoot::log4j→log4j2 변경하기 (0) | 2022.07.14 |
[Spring Boot]JaCoCo 적용하기 (0) | 2022.02.01 |
@SpringBootApplication 이해하기 (0) | 2022.02.01 |
API Versioning (0) | 2021.09.28 |