[java] TestNG의 강력한 파라미터화 및 데이터 공유 기능

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);
    }
}

위의 코드에서 nameage 값은 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);
    }
}

위의 코드에서 namesetUp() 메소드를 통해 초기화되며, 테스트 메소드에서 공유하여 사용할 수 있습니다. 이렇게 함으로써 데이터를 효율적으로 공유하고, 코드 중복을 줄일 수 있습니다.

파라미터화 및 데이터 공유 기능은 TestNG에서 제공하는 강력한 기능 중 일부입니다. 이를 활용하여 테스트 코드를 더욱 유연하게 작성할 수 있으며, 테스트의 생산성을 향상시킬 수 있습니다.

References