[java] TestNG의 테스트 실행 순서 및 그룹화

TestNG는 자바 기반의 테스트 프레임워크로, 테스트를 좀 더 구조화하고 관리하기 쉽게 해줍니다. 이번 글에서는 TestNG에서 테스트를 실행하는 순서와 테스트를 그룹화하는 방법에 대해서 알아보겠습니다.

테스트 실행 순서

TestNG에서는 테스트 메서드의 실행 순서를 제어할 수 있습니다. 기본적으로 TestNG는 메서드의 이름 순서대로 실행합니다. 그러나 특정한 실행 순서를 원하는 경우, @Test 애너테이션의 priority 속성을 사용하여 우선순위를 지정할 수 있습니다.

@Test(priority = 1)
public void firstTest() {
    // 첫 번째 테스트 메서드의 로직
}

@Test(priority = 2)
public void secondTest() {
    // 두 번째 테스트 메서드의 로직
}

위의 예시에서는 @Test 애너테이션의 priority 속성을 이용해 테스트 메서드의 실행 순서를 조정하고 있습니다. firstTest 메서드가 secondTest 메서드보다 먼저 실행되며, 이 순서는 TestNG에서 보장됩니다.

테스트 그룹화

TestNG는 테스트를 그룹화하여 유연하게 실행할 수 있도록 지원합니다. @Test 애너테이션에 groups 속성을 사용하여 테스트 메서드를 원하는 그룹에 속하도록 할 수 있습니다.

@Test(groups = "smoke")
public void smokeTest() {
    // 스모크 테스트 로직
}

@Test(groups = "regression")
public void regressionTest() {
    // 회귀 테스트 로직
}

위의 예시에서는 smokeTest 메서드와 regressionTest 메서드를 각각 smoke 그룹과 regression 그룹에 속하도록 설정하고 있습니다. 이렇게 설정한 후, 그룹별로 테스트를 실행하고 싶다면 TestNG의 XML 설정 파일에서 그룹을 지정할 수 있습니다.

<test name="모든 테스트">
    <groups>
        <run>
            <include name="smoke"/>
        </run>
    </groups>
    <classes>
        <class name="com.example.TestClass"/>
    </classes>
</test>

위의 예시에서는 smoke 그룹에 속한 테스트만을 실행하도록 설정하고 있습니다. include 태그 안에 실행하고자 하는 그룹을 명시하여 원하는 그룹의 테스트만 실행할 수 있습니다.

결론

TestNG는 테스트를 실행하는 순서를 제어하고, 테스트를 그룹화하여 필요한 테스트만을 실행할 수 있도록 도와줍니다. prioritygroups 속성을 적절히 사용하여 효율적인 테스트 실행을 구축할 수 있습니다.


참고 자료