TestNG는 Java 기반의 테스트 프레임워크로, 다양한 기능을 제공하여 테스트 코드를 더욱 유연하고 강력하게 작성할 수 있게 도와줍니다. 이 중에서도 파라미터화 및 데이터 공유 기능은 매우 강력하며, 다양한 테스트 케이스를 효율적으로 관리하고 실행할 수 있도록 도와줍니다.
파라미터화 기능
파라미터화 기능은 TestNG에서 테스트 메소드에 여러 입력 값을 전달하여 반복적으로 실행할 수 있도록 해주는 기능입니다. @Parameters
어노테이션을 사용하여 파라미터화된 테스트 메소드를 생성하고, 해당 메소드에 전달할 값을 testng.xml
파일에서 정의할 수 있습니다.
아래는 예시 코드입니다.
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class ParameterizedTest {
@Test
@Parameters({"name", "age"})
public void test(String name, int age) {
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
위의 코드에서 name
과 age
값은 testng.xml
파일에서 전달됩니다. testng.xml
파일에는 다음과 같이 파라미터 값을 설정할 수 있습니다.
<test name="ParameterizedTest">
<parameter name="name" value="John" />
<parameter name="age" value="25" />
<classes>
<class name="com.example.ParameterizedTest" />
</classes>
</test>
위의 예시에서는 name
에 “John”, age
에 25라는 값을 전달합니다. 테스트 메소드는 이러한 값으로 여러번 실행되며, 결과를 확인할 수 있습니다.
데이터 공유 기능
TestNG는 데이터 공유 기능을 통해 여러 테스트 메소드나 클래스 간에 데이터를 공유할 수 있도록 해줍니다. 테스트 클래스 내에서 멤버 변수를 선언하여 테스트 메소드 사이에서 데이터를 공유할 수 있는데, 이때 @BeforeMethod
어노테이션을 사용하여 해당 변수를 초기화할 수 있습니다.
아래는 예시 코드입니다.
import org.testng.annotations.Test;
import org.testng.annotations.BeforeMethod;
public class DataProviderTest {
private String name;
@BeforeMethod
public void setUp() {
name = "John";
}
@Test
public void test1() {
System.out.println("Name: " + name);
}
@Test
public void test2() {
System.out.println("Name: " + name);
}
}
위의 코드에서 name
은 setUp()
메소드를 통해 초기화되며, 테스트 메소드에서 공유하여 사용할 수 있습니다. 이렇게 함으로써 데이터를 효율적으로 공유하고, 코드 중복을 줄일 수 있습니다.
파라미터화 및 데이터 공유 기능은 TestNG에서 제공하는 강력한 기능 중 일부입니다. 이를 활용하여 테스트 코드를 더욱 유연하게 작성할 수 있으며, 테스트의 생산성을 향상시킬 수 있습니다.