필요성 : 기본적으로 테스트는 순서에 의존하지 않고 서로 독립적으로 실행되는 것이 바람직하다. 하지만 보고서를 생성하거나 테스트를 기능 별로 묶고 싶을 때 등, 특정한 순서로 테스트를 실행하는 것이 유용한 경우도 있다.
@TestMethodOrder
- 이 어노테이션을 통해 테스트 순서를 지정할 수 있다. DisplayName 순서, MethodName 순서, Random 순서, Order 어노테이션에 따른 순서와 같이 다양한 기준을 넣을 수 있다.
- 이 어노테이션은 테스트하는 클래스 위에 작성한다.
- MethodOrderer 패키지에 있는 class를 넣으면 된다.
- 만약 Order 어노테이션으로 지정했다면 각 테스트 메소드 위에 @Order(num)을 적어주면 된다. num이 작을 수록 먼저 실행된다.
- @Order 어노테이션이 붙은 메소드가 무조건 먼저 실행되며, @Order가 없는 어노테이션은 기본 순서로 동작한다. 같은 num값을 가지는 테스트 메소드 또한 기본 순서로 동작한다.
@TestMethodOrder(OrderAnnotation.class)
class DemoUtilsTest {
DemoUtils demoUtils;
...
@Test
@Order(1) // 가장 먼저 실행
void add() {
//execute
int actual = demoUtils.add(2, 4);
//assert
Assertions.assertEquals(6, actual, "2+4 must be 6");
Assertions.assertNotEquals(7, actual, "2+4 must not be 7");
}
@Test
@Order(2) // 그 다음으로 실행
void checkNull() {
//set up
DemoUtils demoUtils = new DemoUtils();
String string1 = null;
String string2 = "choi";
//execute
Object obj1 = demoUtils.checkNull(string1);
Object obj2 = demoUtils.checkNull(string2);
//assert
Assertions.assertNull(obj1, "Object must be null");
Assertions.assertNotNull(obj2, "Object must not be null");
}
...
}
'Spring Boot > testing' 카테고리의 다른 글
JaCoCO를 통한 코드 커버리지 리포트 생성 (0) | 2024.11.10 |
---|---|
코드 커버리지 in JUnit (0) | 2024.11.09 |
assertThrows & assertDoesNotThrwos & assertTimeoutPreemptively in JUnit (0) | 2024.11.09 |
assertArrayEquals & assertIterableEquals & in JUnit (0) | 2024.11.09 |
assertSame & assertNotSame & assertTrue & assertFasle in JUint (0) | 2024.11.09 |