테스트를 원하는 순서대로 실행하려면?
@SpringBootTest
@Transactional
public class OrderingTest {
@Test
public void a_Test() throws Exception {
System.out.println("A TEST!");
}
@Test
public void create_Test() throws Exception {
System.out.println("create TEST!");
}
@Test
public void b_Test() throws Exception {
System.out.println("B TEST!");
}
@Test
public void c_Test() throws Exception {
System.out.println("create TEST!");
}
}
위 코드를 실행하면 다음과 같은 순서로 실행된다.
클래스 명 순으로 정렬되어 실행되는데... 테스트 순서를 맞춘다고 테스트 명을 정렬해서 지을 순 없다!
Junit5에서는 다음과 같이 Order 어노테이션으로 설정이 가능하다.
@SpringBootTest
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@Transactional
public class OrderingTest {
@Test
@Order(1)
public void a_Test() throws Exception {
System.out.println("A TEST!");
}
@Test
@Order(2)
public void create_Test() throws Exception {
System.out.println("create TEST!");
}
@Test
@Order(4)
public void b_Test() throws Exception {
System.out.println("B TEST!");
}
@Test
@Order(3)
public void c_Test() throws Exception {
System.out.println("create TEST!");
}
}
단, Order라는 클래스를 이미 import한 경우에는 해당 클래스로 인식하게 되니 다음과 같이 패키지를 명시하는 방식으로 지정해줘야 한다.
@SpringBootTest
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
@Transactional
public class OrderingTest {
@Test
@org.junit.jupiter.api.Order(1)
public void a_Test() throws Exception {
System.out.println("A TEST!");
}
@Test
@org.junit.jupiter.api.Order(2)
public void create_Test() throws Exception {
System.out.println("create TEST!");
}
@Test
@org.junit.jupiter.api.Order(4)
public void b_Test() throws Exception {
System.out.println("B TEST!");
}
@Test
@org.junit.jupiter.api.Order(3)
public void c_Test() throws Exception {
System.out.println("create TEST!");
}
}
이방법 이외에 MethodOrderer.OrderAnnotation.class를 사용하면 문자/숫자 조합으로 정렬해준다고 한다.(필자는 아직까지 Order 방식이 편한 것 같다.)
Order방식의 단점은 1,2,3,4 이런식으로 지정하게 되면 중간에 끼워넣고 싶을 때, 끼워넣는 곳 부터 끝까지 모든 수를 증가시켜야하는 불편함이 있기 때문에 1,2,3 보다는 100,200,300 이런식으로 큰 단위로 넘기는게 좋을 것 같다는 생각이 든다.
728x90
'[IT] > SpringBoot' 카테고리의 다른 글
[Spring Boot] 설정파일 암호화 (application.yml) (0) | 2021.04.28 |
---|---|
[Spring Boot] Controller - Dto 유효성 검사 (0) | 2021.04.19 |
[Spring Boot] JPA metamodel must not be empty 에러 (0) | 2021.04.16 |
[Data JPA & Query DSL] Repository의 구현클래스 선정 규칙 (0) | 2021.04.03 |
[Spring boot] Swagger 설정하기 (0) | 2021.02.20 |