JUnit 4 | JUnit 5 | description |
---|---|---|
@Test | @Test | 테스트 메소드 선언 |
@BeforeClass | @BeforeAll | 현재 클래스의 모든 테스트 메서드보다 먼저 실행 |
@AfterClass | @AfterAll | 현재 클래스의 모든 테스트 메서드 실행 후 실행 |
@Before | @BeforeEach | 각 테스트 메서드 전에 실행 |
@After | @AfterEach | 각 테스트 메서드 후에 실행 |
@Ignore | @Disabled | 테스트 메서드/클래스 비활성화 |
NA | @TestFactory | 동적 테스트를 위한 테스트 팩토리 |
NA | @Nested | 중첩 테스트 |
@Category | @Tag | 태깅(Tagging) 및 필터링(Filtering) |
NA | @ExtendWith | 사용자 정의 확장 등록 |
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() {
// 빠른 테스트 내용
}
JUnit4
JUnit4에서는 특정 OS 조건에 따라 테스트를 실행하기 어려웠습니다.
JUnit5
JUnit5에서는 @EnabledOnOs, @EnabledIfSystemProperty 등의 어노테이션을 사용하여 조건에 따라 특정 테스트를 실행할 수 있습니다.
@EnabledOnOs(OS.MAC)
@Test
void myMacTest() {
// 맥 전용 테스트 내용
}
JUnit4
JUnit4에서는 확장을 위해 @RunWith 어노테이션을 사용했습니다.
@RunWith(MyExtension.class)
public class MyTest {
// 테스트 내용
}
JUnit5
JUnit5에서는 더 강력한 확장 모델을 제공하며, @ExtendWith 어노테이션을 통해 여러 확장을 적용할 수 있습니다.
@ExtendWith(MyExtension.class)
public class MyTest {
// 테스트 내용
}
JUnit4
JUnit4에서는 테스트 대상이 되는 메소드가 public이어야 했습니다.
public class MyTest {
@Test
public void myTest() {
// 테스트 내용
}
}
JUnit5
JUnit5에서는 테스트 대상이 되는 메소드가 private를 제외한 어떤 접근 제어자를 가지든 상관없습니다.
public class MyTest {
@Test
void myTest() {
// 테스트 내용
}
}
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)