[java] TestNG의 선택적 실행 및 디버깅

TestNG는 자바 언어를 위한 강력한 테스팅 프레임워크로, 테스트 스위트(test suite)를 실행하고 결과를 보고하는 데 매우 유용합니다. 이 툴을 사용하여 특정 테스트 메소드 또는 그룹, 클래스, 패키지를 선택적으로 실행하거나 디버깅할 수 있습니다. 이번 포스트에서는 TestNG의 선택적 실행과 디버깅에 대해 알아보겠습니다.

선택적 실행

TestNG에서 선택적으로 실행하고자 하는 테스트를 지정하는 방법은 여러 가지가 있습니다. 가장 간단한 방법은 @Test 어노테이션을 사용하여 각각의 테스트 메소드 위에 붙여주는 것입니다. 아래는 예시입니다:

@Test
public void testMethod1() {
    // test code
}

@Test
public void testMethod2() {
    // test code
}

이렇게 각 테스트 메소드 위에 @Test 어노테이션을 붙여주면 TestNG는 해당 메소드를 테스트 스위트에서 실행합니다.

또한, TestNG는 테스트 메소드의 그룹, 클래스 또는 패키지를 기준으로 테스트를 선택적으로 실행할 수도 있습니다. 예를 들어, @Test 어노테이션에 groups 속성을 사용하여 특정 그룹에 속하는 테스트만 실행할 수 있습니다.

@Test(groups = "group1")
public void testMethod1() {
    // test code
}

@Test(groups = "group2")
public void testMethod2() {
    // test code
}

위의 예시에서는 group1에 속하는 테스트 메소드 testMethod1()만을 선택적으로 실행할 수 있습니다.

또한, 특정 클래스 또는 패키지도 선택적으로 실행할 수 있습니다. TestNG의 XML 설정 파일을 사용하여 실행할 클래스 또는 패키지를 명시할 수 있습니다.

<suite name="My Test Suite">
    <test name="My Test" preserve-order="true">
        <classes>
            <class name="com.example.MyTestClass" />
            <package name="com.example.tests" />
        </classes>
    </test>
</suite>

위의 예시에서는 MyTestClass 클래스와 com.example.tests 패키지에 속하는 모든 테스트 클래스를 선택적으로 실행합니다.

디버깅

TestNG에서 테스트를 디버깅하는 방법은 여러 가지가 있습니다. 가장 간단한 방법은 System.out.println() 메소드를 사용하여 원하는 정보를 콘솔에 출력하는 것입니다. 예를 들어, 테스트 메소드의 특정 변수의 값을 확인하기 위해 다음과 같이 코드를 작성할 수 있습니다.

@Test
public void testMethod() {
    int result = someCalculation();
    System.out.println("Result: " + result);
    // test code
}

또한, TestNG는 로깅 프레임워크를 지원하기 때문에 log4j 또는 slf4j와 같은 로깅 라이브러리를 사용하여 로그를 남길 수도 있습니다.

import org.apache.log4j.Logger;

@Test
public void testMethod() {
    Logger log = Logger.getLogger(this.getClass());
    log.debug("Starting testMethod");
    // test code
    log.debug("Ending testMethod");
}

위의 예시는 log4j를 사용하여 디버깅 정보를 로그로 출력합니다.

마지막으로, TestNG는 디버깅을 위한 다양한 어노테이션도 제공합니다. 예를 들어, @BeforeMethod, @AfterMethod, @BeforeClass, @AfterClass 등의 어노테이션을 사용하여 특정 메소드 또는 클래스의 실행 이전 또는 이후에 원하는 동작을 수행할 수 있습니다. 이를 통해 테스트 메소드의 실행 과정을 자세히 추적하고 문제를 식별할 수 있습니다.

이상으로 TestNG에서 선택적 실행과 디버깅을 수행하는 방법을 알아보았습니다. TestNG는 다양한 기능을 제공하여 자동화된 테스트를 쉽게 관리할 수 있게 해주므로, 테스트 코드의 품질을 향상시키고 개발자들의 생산성을 높일 수 있습니다.

참고 자료