[java] JUnit에서 테스트 실행 순서 지정하기

JUnit은 기본적으로 테스트 메서드의 실행 순서를 보장하지 않습니다. 이는 테스트 메서드가 독립적으로 실행되어야 하기 때문입니다. 하지만 때때로 여러 개의 테스트 메서드를 특정 순서에 맞게 실행해야 하는 경우가 있습니다. 이때는 다른 방법을 사용해야 합니다.

1. @FixMethodOrder 사용하기

JUnit4부터는 @FixMethodOrder 어노테이션을 사용하여 테스트 메서드의 실행 순서를 지정할 수 있습니다. @FixMethodOrder는 다음과 같이 MethodSorters를 통해 실행 순서를 지정할 수 있습니다.

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

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestExecutionOrder {
    @Test
    public void testA() {
        // 테스트 내용
    }

    @Test
    public void testB() {
        // 테스트 내용
    }

    @Test
    public void testC() {
        // 테스트 내용
    }
}

@FixMethodOrderMethodSorters에는 아래와 같은 옵션이 있습니다.

2. 직접 테스트 메서드 순서 정의하기

테스트 클래스에서 다음과 같이 테스트 메서드의 순서를 정의할 수도 있습니다.

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.BlockJUnit4ClassRunner;

@RunWith(BlockJUnit4ClassRunner.class)
public class TestExecutionOrder {
    @Test
    public void testA() {
        // 테스트 내용
    }

    @Test
    public void testB() {
        // 테스트 내용
    }

    @Test
    public void testC() {
        // 테스트 내용
    }
}

위 방법을 사용하면 JUnit이 테스트 메서드를 실행하는 순서를 보장할 수 있습니다.

결론

테스트의 실행 순서를 보장하는 것은 JUnit의 핵심 기능 중 하나가 아닙니다. 하지만 필요에 따라 테스트 메서드의 실행 순서를 지정해야 하는 경우가 있을 수 있으며, 위에서 설명한 방법을 사용하여 이러한 상황에 대응할 수 있습니다.


참고: