Spring
Junit test case를 순서대로 실행 할 수 있을까?
RyanGomdoriPooh
2019. 8. 24. 16:53
MethodSorters 옵션
MethodSorters.DEFAULT
- class에 속한 모든 method를 hashcode()를 호출하여, hashCode를 기반으로 순서가 결정한다.
- 일일히 hashCode를 찾아보지 않는 이상 실행 순서를 예측하기 힘들다.
MethodSorters.JVM
- class에 속한 모든 method를 가져오는 getDeclaredMethods()에서 가져온 method의 순서대로 Test Case를 실행합니다.
- 단, JVM은 getDeclaredMethods()는 시스템의 리소스 상황에 따라 다른 순서로 결과를 보낸다.
MethodSorters.NAME_ASCENDING
- 메소드 명을 오름차순으로 정렬한 순서대로 실행됩니다.
- 보통 Test 순서를 보장할 때, 많이 쓰는 어트리뷰트입니다.
다음 Annotation을 class위에 선언하여 사용
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {
@Test
public void m_1() {
// 테스트 내용
}
@Test
public void m_2() {
// 테스트 내용
}
@Test
public void m_3() {
// 테스트 내용
}
}
// 실행 순서: m_1() => m_2() => m_3()