Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- JUnit
- LRS
- git
- JUnit5
- 소스코드품질
- diary
- 데이터 거버넌스
- notempty
- 정적분석도구
- 백준
- useRef
- 알고리즘
- 데이터 직렬화
- 테스트
- 일기
- xapi
- 스택
- extendwith
- 부하 테스트
- 연계방식
- playgroundAI
- AI그림
- 파이썬
- Live Template
- 영어일기
- Runwith
- 코딩테스트
- application.yml
- git 오류
- serializtion
Archives
- Today
- Total
HanSol's Oak Cask
JUnit4 @RunWith vs JUnit5 @ExtendWith 차이점 정리 본문
JUnit에서 테스트 실행 방식을 지정하는 방법은 JUnit 4와 JUnit 5에서 다릅니다. JUnit 4에서는 @RunWith 어노테이션을 사용하지만, JUnit 5에서는 @ExtendWith가 그 역할을 대신합니다. 이 글에서는 @RunWith가 무엇인지 설명하고, JUnit 5에서는 어떻게 변경되었는지 정리해보겠습니다.
1. @RunWith 어노테이션 (JUnit 4)
@RunWith는 JUnit 4에서 테스트 실행 방식을 변경할 때 사용하는 어노테이션입니다. 기본적으로 JUnit 4는 BlockJUnit4ClassRunner라는 실행기를 사용하지만, @RunWith를 사용하면 원하는 실행기로 변경할 수 있습니다.
📌 주요 사용 예
- Spring 테스트: @RunWith(SpringRunner.class) → Spring 환경에서 테스트 실행
- Mockito 테스트: @RunWith(MockitoJUnitRunner.class) → Mockito 기반 테스트 실행
- 매개변수 테스트: @RunWith(Parameterized.class) → 매개변수화된 테스트 실행
예제: JUnit 4에서 @RunWith 사용
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class) // Mockito 기반 테스트 실행
public class MyTest {
@Test
public void testSomething() {
System.out.println("JUnit 4에서 @RunWith 사용");
}
}
2. JUnit 5에서 @RunWith의 대체 방법
JUnit 5에서는 @RunWith가 제거되고 **@ExtendWith**가 도입되었습니다. JUnit 5는 확장 개념을 도입하여 특정 실행기 대신 확장(Extension)을 활용하도록 변경되었습니다.
예제: JUnit 5에서 @ExtendWith 사용
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class) // JUnit 5에서는 @ExtendWith 사용
public class MyTest {
@Test
public void testSomething() {
System.out.println("JUnit 5에서 @ExtendWith 사용");
}
}
📌 주요 변경 사항
- @RunWith(MockitoJUnitRunner.class) → @ExtendWith(MockitoExtension.class)
- @RunWith(SpringRunner.class) → @ExtendWith(SpringExtension.class)
- @RunWith(Parameterized.class) → @ParameterizedTest 사용 (JUnit 5의 새로운 기능)
3. JUnit 4 → JUnit 5 변경 사항 정리
기능JUnit 4 (@RunWith)JUnit 5 (@ExtendWith)
| Spring 테스트 | @RunWith(SpringRunner.class) | @ExtendWith(SpringExtension.class) |
| Mockito 테스트 | @RunWith(MockitoJUnitRunner.class) | @ExtendWith(MockitoExtension.class) |
| 매개변수 테스트 | @RunWith(Parameterized.class) | @ParameterizedTest 사용 |
| 커스텀 실행기 | @RunWith(CustomRunner.class) | @ExtendWith(CustomExtension.class) |
4. 결론
JUnit 5에서는 @RunWith가 제거되고 @ExtendWith가 그 역할을 대신합니다.
- Spring, Mockito 같은 확장 기능을 적용할 때 @ExtendWith를 사용해야 합니다.
- 매개변수 테스트는 @ParameterizedTest를 사용하여 구현합니다.
- 새로운 프로젝트에서는 JUnit 5 스타일을 사용하는 것이 더 권장됩니다.
📌 JUnit 4와 JUnit 5를 비교하며 프로젝트에 맞는 테스트 방식을 선택해보세요! 😊
'GPT가 말아주는 지식' 카테고리의 다른 글
| JUnit4의 @Test(expected = ...)는 JUnit5에서 지원 X (0) | 2025.03.26 |
|---|---|
| IntelliJ에서 커스텀 Live Template 만드는 방법 (TDD 예제 포함) (1) | 2025.02.07 |
| Spring Boot 설정 파일 비교: application.yml vs application.properties 차이점 정리 (0) | 2025.02.07 |