[java] TestNG를 활용한 익스텐션 개발

TestNG는 자바 기반의 단위 테스트 프레임워크로서, 테스트 코드를 구조화하고 강력한 테스트 제어 기능을 제공합니다. TestNG를 사용하면 테스트의 실행, 그룹화, 의존성 관리, 병렬 실행 등 다양한 기능을 쉽게 수행할 수 있습니다.

익스텐션은 TestNG에서 제공하는 기능을 확장하여 테스트 코드에 자신만의 로직을 추가할 수 있는 방법입니다. 이번 글에서는 TestNG 익스텐션 개발을 위한 기본적인 절차와 예제 코드를 살펴보겠습니다.

익스텐션 개발 절차

  1. org.testng.IInvokedMethodListener 인터페이스를 구현하는 클래스 생성
  2. 메소드 수행 이전과 이후에서 원하는 로직을 구현
  3. testng.xml 파일에 익스텐션을 등록

예제 코드

이제 예제 코드를 통해 TestNG 익스텐션 개발을 실습해보겠습니다.

import org.testng.IInvokedMethod;
import org.testng.IInvokedMethodListener;
import org.testng.ITestResult;

public class CustomListener implements IInvokedMethodListener {

    @Override
    public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
        // 메소드 실행 전에 실행될 로직 작성
        System.out.println("Before method execution: " + method.getTestMethod().getMethodName());
    }

    @Override
    public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
        // 메소드 실행 후에 실행될 로직 작성
        System.out.println("After method execution: " + method.getTestMethod().getMethodName());
    }
}

위의 코드는 TestNG의 IInvokedMethodListener 인터페이스를 구현한 CustomListener 클래스입니다. 이 클래스는 메소드 실행 이전과 이후에 로그를 출력하는 간단한 예제입니다.

이제 testng.xml 파일에 익스텐션을 등록해야 합니다.

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Test Suite">
    <listeners>
        <listener class-name="com.example.CustomListener" />
    </listeners>

    <test name="Test">
        <classes>
            <class name="com.example.TestClass" />
        </classes>
    </test>
</suite>

위의 예제에서는 CustomListener 클래스를 익스텐션으로 등록하고, TestClass 클래스를 테스트 클래스로 지정했습니다.

이제 테스트를 실행하면 CustomListener 클래스의 beforeInvocationafterInvocation 메소드가 해당 테스트 메소드 실행 전후에 호출됩니다.

결론

TestNG를 활용한 익스텐션 개발은 테스트 코드에 자신만의 로직을 추가하여 테스트의 제어와 관리를 더욱 편리하게 할 수 있습니다. 이번 글에서는 익스텐션 개발의 기본적인 절차와 예제 코드를 소개했습니다. TestNG의 다른 익스텐션들도 살펴보며 익스텐션 개발에 대한 이해를 깊이 있는 수준으로 향상시키시기 바랍니다.

참고 자료