[java] TestNG의 기능과 특징

TestNG는 Java 프레임워크의 하나로서, 테스트 코드 작성 및 실행을 위한 다양한 기능을 제공합니다. 이번 글에서는 TestNG의 주요 기능과 특징에 대해 알아보겠습니다.

1. 어노테이션 기반 테스트

TestNG는 어노테이션을 이용하여 테스트 관련 정보를 표시합니다. @Test 어노테이션을 이용하여 테스트 메서드를 정의할 수 있으며, @BeforeTest, @AfterTest 등의 어노테이션을 이용하여 테스트 실행 전후에 필요한 작업을 수행할 수 있습니다. 이를 통해 테스트 코드의 가독성을 높이고, 테스트 실행 순서를 제어할 수 있습니다.

public class MyTestClass {
    @BeforeTest
    public void setUp() {
        // 테스트 실행 전에 필요한 작업 수행
    }

    @Test
    public void myTest() {
        // 테스트 코드 작성
    }

    @AfterTest
    public void tearDown() {
        // 테스트 실행 후에 필요한 작업 수행
    }
}

2. 데이터 프로바이더

TestNG는 @DataProvider 어노테이션을 이용하여 테스트 데이터를 제공하는 기능을 제공합니다. 이를 통해 하나의 테스트 메서드에서 여러 데이터를 사용하여 반복적인 테스트를 수행할 수 있습니다.

@DataProvider
public Object[][] testData() {
    return new Object[][] {
        { "data1" },
        { "data2" },
        { "data3" }
    };
}

@Test(dataProvider = "testData")
public void myTest(String data) {
    // 테스트 코드 작성
}

3. 그룹화와 의존성 설정

TestNG는 테스트 메서드를 그룹화하여 특정 그룹만 선택적으로 실행할 수 있는 기능을 제공합니다. @Test 어노테이션에 groups 속성을 설정하여 그룹을 지정하고, @BeforeGroups, @AfterGroups 등의 어노테이션을 이용하여 그룹 실행 전후에 필요한 작업을 수행할 수 있습니다.

@Test(groups = "group1")
public void test1() {
    // 테스트 코드 작성
}

@Test(groups = "group2")
public void test2() {
    // 테스트 코드 작성
}

@BeforeGroups("group1")
public void setUpGroup1() {
    // 그룹 실행 전에 필요한 작업 수행
}

@AfterGroups("group2")
public void tearDownGroup2() {
    // 그룹 실행 후에 필요한 작업 수행
}

4. 리포팅

TestNG는 테스트 결과를 다양한 형식으로 리포팅할 수 있는 기능을 제공합니다. 간단한 HTML 리포트부터 XML, 이메일 리포트까지 다양한 형식으로 결과를 확인할 수 있습니다. 또한, 리포팅 관련 설정을 통해 원하는 형식으로 리포팅을 조정할 수도 있습니다.

5. 병렬 실행 지원

TestNG는 테스트 메서드의 병렬 실행을 지원합니다. @Test 어노테이션의 threadPoolSize 속성을 설정하여 동시에 실행되는 스레드 수를 제어할 수 있으며, parallel 속성을 사용하여 특정 그룹 또는 클래스별로 병렬 실행을 가능하게 할 수 있습니다.

@Test(threadPoolSize = 3, invocationCount = 10)
public void myTest() {
    // 테스트 코드 작성
}

위와 같이 설정하면 myTest 메서드는 3개의 스레드에서 10번 실행됩니다.

결론

TestNG는 다양한 기능을 제공하여 효과적인 테스트 코드 작성과 실행을 가능하게 해줍니다. 어노테이션 기반 테스트, 데이터 프로바이더, 그룹화 및 의존성 설정, 리포팅, 병렬 실행 지원 등의 특징을 통해 안정적이고 유연한 테스트 환경을 구축할 수 있습니다.

참고 자료: