[Spring] JUnit4 에서 테스트 순서 지정하는 방법

2023-04-17


사진: Unsplash 의 Philip Oroni


1. 방법

 

JUnit은 독립된 환경에서의 테스트를 지원하기 때문에 테스트의 순서가 보장되지 않는다. 때문에 동일한 객체 참조가 있을 경우에는 테스트 케이스들의 순서를 보장해주어야 하는 경우가 있는데, 아래의 예제를 보자.

 




import org.junit.FixMethodOrder;
import org.junit.Test;

public class TestCase1 {

    static int number1 = 0;
    @Test
    public void a1_test(){
        number1 += 1;
        System.out.println("test1 =================================" + number1);
    }
    @Test
    public void a2_test(){
        number1 += 1;
        System.out.println("test2 =================================" + number1);
    }
    @Test
    public void a3_test(){
        number1 += 1;
        System.out.println("test3 =================================" + number1);
    }
    @Test
    public void a4_test(){
        number1 += 1;
        System.out.println("test4 =================================" + number1);
    }
    @Test
    public void a5_test(){
        number1 += 1;
        System.out.println("test5 =================================" + number1);
    }
}

 

위의 코드 같은 경우는 순서가 보장되어 있지 않아 a1_test ~ a5_test 어느 것이 먼저 실행될지 알 수 없다.


그래서 JUnit 4에서는 아래와 같은 어노테이션을 지원한다. 해당 어노테이션은 @Test가 선언된 메서드의 문자열 기준으로 오름차순으로 실행하여 실행 순서를 보장해 준다.

 

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

위의 어노테이션을 적용한 테스트 케이스는 아래와 같다.

 




import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestCase1 {

    static int number1 = 0;
    @Test
    public void a1_test(){
        number1 += 1;
        System.out.println("test1 =================================" + number1);
    }
    @Test
    public void a2_test(){
        number1 += 1;
        System.out.println("test2 =================================" + number1);
    }
    @Test
    public void a3_test(){
        number1 += 1;
        System.out.println("test3 =================================" + number1);
    }
    @Test
    public void a4_test(){
        number1 += 1;
        System.out.println("test4 =================================" + number1);
    }
    @Test
    public void a5_test(){
        number1 += 1;
        System.out.println("test5 =================================" + number1);
    }
}

실행 결과를 확인해보면 메서드명 기준으로 오름차순 되어 테스트가 실행된 것을 확인할 수 있다.

 


메인 이미지 출처 : 사진: UnsplashPhilip Oroni