[java] TestNG와 Extent Reports를 활용한 테스트 리포팅

테스트 리포팅은 테스트 실행 결과를 시각적으로 보여주어 테스트에 대한 이해를 돕는 중요한 요소입니다. TestNG는 Java 기반의 테스트 프레임워크로, 애플리케이션의 테스트를 쉽게 관리하고 리포팅할 수 있게 해줍니다. Extent Reports는 TestNG와 함께 사용할 수 있는 리포팅 도구로, 보다 상세한 테스트 결과를 제공합니다.

TestNG 설치 및 설정

TestNG를 사용하기 위해서는 먼저 Maven 또는 Gradle과 같은 의존성 관리 도구를 사용하여 TestNG를 설치해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같이 의존성을 추가해줍니다:

<dependencies>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>7.4.0</version>
    </dependency>
</dependencies>

그리고 Maven 프로젝트를 업데이트하여 의존성을 다운로드합니다.

Extent Reports 설치 및 설정

Extent Reports를 사용하기 위해서는 먼저 Maven 또는 Gradle과 같은 의존성 관리 도구를 사용하여 Extent Reports를 설치해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같이 의존성을 추가해줍니다:

<dependencies>
    <dependency>
        <groupId>com.aventstack</groupId>
        <artifactId>extentreports</artifactId>
        <version>4.0.9</version>
    </dependency>
</dependencies>

그리고 Maven 프로젝트를 업데이트하여 의존성을 다운로드합니다.

TestNG와 Extent Reports 통합

TestNG와 Extent Reports를 통합하기 위해서는 TestNG 리스너를 구현해야 합니다. 이 리스너는 테스트 실행 전후에 실행되는 콜백 메서드를 제공하며, 이를 활용하여 Extent Reports 리포팅에 필요한 정보를 수집할 수 있습니다.

다음은 TestNG 리스너를 구현한 예시입니다:

import com.aventstack.extentreports.ExtentReports;
import com.aventstack.extentreports.ExtentTest;
import com.aventstack.extentreports.reporter.ExtentSparkReporter;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;

public class TestListener implements ITestListener {

    private ExtentReports extent;
    private ExtentTest test;

    @Override
    public void onStart(ITestContext context) {
        extent = new ExtentReports();
        ExtentSparkReporter spark = new ExtentSparkReporter("test-output/extent.html");
        extent.attachReporter(spark);
    }

    @Override
    public void onTestStart(ITestResult result) {
        test = extent.createTest(result.getMethod().getDescription());
    }

    @Override
    public void onTestSuccess(ITestResult result) {
        test.pass("Test passed");
    }

    @Override
    public void onTestFailure(ITestResult result) {
        test.fail(result.getThrowable());
    }

    @Override
    public void onFinish(ITestContext context) {
        extent.flush();
    }
}

위의 리스너를 사용하기 위해서는 TestNG XML 파일에 리스너를 등록해주어야 합니다:

<listeners>
    <listener class-name="com.example.TestListener" />
</listeners>

이제 TestNG와 Extent Reports를 통합하여 테스트를 수행하고 리포팅할 수 있습니다. 실행 결과는 test-output/extent.html 파일에 생성됩니다.

마무리

TestNG와 Extent Reports를 함께 사용하여 테스트 리포팅을 구현하는 방법에 대해 알아보았습니다. TestNG는 테스트 실행 관리를 용이하게 해주고, Extent Reports는 상세한 리포팅을 제공하여 테스트 결과에 대한 이해를 돕습니다. 이를 통해 테스트 과정을 더욱 효과적으로 관리할 수 있습니다.