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