JUnit4, JUnit5 차이점

Y_Sevin·2022년 11월 8일
0

JUnit

목록 보기
1/3

1. 어노테이션의 변화

JUnit 4JUnit 5description
@Test@Test테스트 메소드 선언
@BeforeClass@BeforeAll현재 클래스의 모든 테스트 메서드보다 먼저 실행
@AfterClass@AfterAll현재 클래스의 모든 테스트 메서드 실행 후 실행
@Before@BeforeEach각 테스트 메서드 전에 실행
@After@AfterEach각 테스트 메서드 후에 실행
@Ignore@Disabled테스트 메서드/클래스 비활성화
NA@TestFactory동적 테스트를 위한 테스트 팩토리
NA@Nested중첩 테스트
@Category@Tag태깅(Tagging) 및 필터링(Filtering)
NA@ExtendWith사용자 정의 확장 등록

2. 태깅과 필터링

JUnit4
JUnit4에서는 @Category 어노테이션을 사용하여 특정 카테고리의 테스트를 실행하거나 제외할 수 있었습니다.

@Category(FastTests.class)
public class MyTest {
    @Test
    public void myFastTest() {
        // 빠른 테스트 내용
    }
}

JUnit5
JUnit5에서는 @Tag 어노테이션을 이용하여 테스트를 태그할 수 있습니다. 또한, --include-tag, --exclude-tag와 같은 옵션을 사용하여 특정 태그를 가진 테스트를 실행하거나 제외할 수 있습니다.

@Tag("fast")
@Test
void myFastTest() {
    // 빠른 테스트 내용
}

3. 조건에 따른 테스트 실행

JUnit4
JUnit4에서는 특정 OS 조건에 따라 테스트를 실행하기 어려웠습니다.

JUnit5
JUnit5에서는 @EnabledOnOs, @EnabledIfSystemProperty 등의 어노테이션을 사용하여 조건에 따라 특정 테스트를 실행할 수 있습니다.

@EnabledOnOs(OS.MAC)
@Test
void myMacTest() {
    // 맥 전용 테스트 내용
}

4. 확장 모델의 개선

JUnit4
JUnit4에서는 확장을 위해 @RunWith 어노테이션을 사용했습니다.

@RunWith(MyExtension.class)
public class MyTest {
    // 테스트 내용
}

JUnit5
JUnit5에서는 더 강력한 확장 모델을 제공하며, @ExtendWith 어노테이션을 통해 여러 확장을 적용할 수 있습니다.

@ExtendWith(MyExtension.class)
public class MyTest {
    // 테스트 내용
}

5. 접근 제어자

JUnit4
JUnit4에서는 테스트 대상이 되는 메소드가 public이어야 했습니다.

public class MyTest {
    @Test
    public void myTest() {
        // 테스트 내용
    }
}

JUnit5
JUnit5에서는 테스트 대상이 되는 메소드가 private를 제외한 어떤 접근 제어자를 가지든 상관없습니다.

public class MyTest {
    @Test
    void myTest() {
        // 테스트 내용
    }
}

6. Assertions

Junit4

public static void assertEquals(long expected, long actual)
public static void assertEquals(String message, long expected, long actual)

JUnit5
org.junit.jupiter.Assertions에 추가 및 메소드를 포함한 대부분의 주장() 메소드가 포함되어 있다.
JUnit 5 Assertion 메소드에는 테스트가 실패할 경우 출력할 구문 분석 오류 메시지를 지원하는 오버로드된 메소드도 있다.

public static void assertEquals(long expected, long actual)
public static void assertEquals(long expected, long actual, String message)
public static void assertEquals(long expected, long actual, Supplier messageSupplier)

참고
https://howtodoinjava.com/junit5/junit-5-vs-junit-4/

profile
매일은 아니더라도 꾸준히 올리자는 마음으로 시작하는 개발블로그😎

0개의 댓글