[java] TestNG를 활용한 멀티 스레드 테스트

TestNG는 자바 기반의 테스팅 프레임워크로, 다양한 기능을 제공하여 테스트를 보다 쉽게 작성하고 실행할 수 있도록 도와줍니다. 그 중에서도 멀티 스레드 기능은 특히 테스트의 성능을 향상시키는 데 도움이 됩니다. 이번 포스트에서는 TestNG를 활용하여 멀티 스레드 테스트를 작성하는 방법에 대해 알아보겠습니다.

1. 의존성 추가

먼저, TestNG를 사용하기 위해 프로젝트에 의존성을 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같이 의존성을 추가합니다:

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>7.0.0</version>
    <scope>test</scope>
</dependency>

Gradle을 사용하는 경우, build.gradle 파일에 다음과 같이 의존성을 추가합니다:

testImplementation 'org.testng:testng:7.0.0'

의존성을 추가한 후, 프로젝트를 다시 빌드해주어야 합니다.

2. 멀티 스레드 테스트 작성

TestNG에서 멀티 스레드 테스트를 작성하기 위해서는 @DataProvider@Test 어노테이션을 활용합니다. @DataProvider 어노테이션을 사용하여 테스트 메서드에 전달될 데이터를 정의하고, @Test 어노테이션의 dataProvider 속성을 통해 데이터를 받아 처리합니다.

다음은 간단한 예시 코드입니다:

@Test(dataProvider = "getData")
public void multiThreadTest(String data) {
    // 테스트 로직 작성
    System.out.println("Thread ID: " + Thread.currentThread().getId() + ", Data: " + data);
}

@DataProvider(name = "getData", parallel = true)
public Object[][] provideData() {
    return new Object[][]{
            {"Data 1"},
            {"Data 2"},
            {"Data 3"}
    };
}

위 코드에서 getData라는 이름의 @DataProvider 메서드를 정의하여 Object[][]형태의 데이터를 반환합니다. parallel 속성을 true로 설정하여 멀티 스레드로 동작하도록 할 수 있습니다. multiThreadTest 메서드에서는 @Test 어노테이션의 dataProvider 속성에 getData를 지정하여 데이터를 받아 처리합니다.

3. 테스트 실행 및 결과 확인

TestNG를 사용하여 멀티 스레드 테스트를 실행하려면, 다음과 같이 테스트 스위트를 설정해야 합니다:

import org.testng.TestListenerAdapter;
import org.testng.TestNG;

public class MultiThreadTestRunner {
    public static void main(String[] args) {
        TestNG testng = new TestNG();
        TestListenerAdapter tla = new TestListenerAdapter();
        testng.addListener(tla);
        testng.setTestClasses(new Class[]{TestClass.class});
        testng.run();
    }
}

위 코드에서 TestClass는 멀티 스레드 테스트를 작성한 클래스의 이름으로 수정해주어야 합니다. 그리고 testng.setTestClasses() 메서드에는 테스트를 실행할 클래스를 지정해주어야 합니다.

테스트 실행 후, 콘솔에는 각 스레드의 ID와 데이터가 출력됩니다. 멀티 스레드로 테스트가 실행되므로, 순서와 상관없이 출력되는 것을 확인할 수 있습니다.

마무리

TestNG를 활용하여 멀티 스레드 테스트를 작성해보았습니다. 이렇게 멀티 스레드로 테스트를 실행하면, 테스트 시간을 단축시킬 수 있고 시스템의 동시 처리 능력을 효과적으로 테스트할 수 있습니다. TestNG의 다양한 기능을 활용하여 보다 효율적인 테스트를 작성해보세요!

참고 자료