[java] TestNG의 파라미터화된 테스트와 데이터 드리븐 테스트

TestNG는 자바용 테스트 프레임워크로, 파라미터화된 테스트와 데이터 드리븐 테스트를 지원합니다. 이를 통해 테스트 케이스를 더 유연하고 재사용 가능하게 만들 수 있습니다.

파라미터화된 테스트(Parameterized Tests)

파라미터화된 테스트는 동일한 테스트 메서드를 여러 번 실행하면서 다른 값을 사용할 수 있도록 해줍니다. 예를 들어, 같은 동작을 하는 메서드에 여러 입력값을 주고 결과를 확인할 수 있습니다.

어노테이션을 사용한 파라미터화된 테스트

TestNG에서는 @Parameters 어노테이션을 사용하여 파라미터화된 테스트를 구현할 수 있습니다. 먼저, 테스트 클래스에서 파라미터를 정의하는 메서드를 작성합니다.

@Parameters({"param1", "param2"})
@BeforeMethod
public void setUp(String param1, int param2) {
    // 파라미터 사용 예제
}

그런 다음, @Test 어노테이션 위에 @Parameters 어노테이션을 추가하여 파라미터 값을 전달합니다.

@Test
@Parameters({"param1", "param2"})
public void myTest(String param1, int param2) {
    // 테스트 실행
}

XML 파일을 사용한 파라미터화된 테스트

또 다른 방법은 XML 파일을 사용하여 파라미터 값을 정의하는 것입니다. 먼저, XML 파일에서 파라미터를 정의합니다.

<parameters>
    <parameter name="param1" value="value1"/>
    <parameter name="param2" value="value2"/>
</parameters>

그런 다음, <test> 섹션 내에 정의된 파라미터를 참조합니다.

<test name="MyTest">
    <parameter name="param1" value="value1"/>
    <parameter name="param2" value="value2"/>
    <classes>
        <class name="com.example.MyTestClass"/>
    </classes>
</test>

데이터 드리븐 테스트(Data Driven Tests)

데이터 드리븐 테스트는 테스트 데이터를 외부에서 가져와서 여러 번의 테스트를 실행하는 방법입니다. 이를 통해 다양한 입력 값으로 테스트를 실행하고 결과를 확인할 수 있습니다.

어노테이션을 사용한 데이터 드리븐 테스트

TestNG에서는 @DataProvider 어노테이션을 사용하여 데이터 드리븐 테스트를 구현할 수 있습니다. 데이터를 제공하는 메서드를 작성하고 @DataProvider 어노테이션을 추가합니다.

@DataProvider(name = "myDataProvider")
public Object[][] provideData() {
    return new Object[][] {
        { "data1", 1 },
        { "data2", 2 },
        { "data3", 3 }
    };
}

다음으로, @Test 어노테이션위에 dataProvider 속성을 사용하여 데이터 프로바이더를 지정합니다.

@Test(dataProvider = "myDataProvider")
public void myTest(String param1, int param2) {
    // 테스트 실행
}

XML 파일을 사용한 데이터 드리븐 테스트

데이터 드리븐 테스트를 XML 파일을 사용하여 정의할 수도 있습니다. 먼저, XML 파일에서 데이터를 정의합니다.

<test name="MyTest">
    <parameter name="param1" value="data1"/>
    <parameter name="param2" value="1"/>
    <parameter name="param1" value="data2"/>
    <parameter name="param2" value="2"/>
    <parameter name="param1" value="data3"/>
    <parameter name="param2" value="3"/>
</test>

그런 다음, <test> 섹션 내에 정의된 데이터를 참조합니다.

<test name="MyTest">
    <classes>
        <class name="com.example.MyTestClass"/>
    </classes>
</test>

결론

TestNG의 파라미터화된 테스트와 데이터 드리븐 테스트를 사용하면 테스트 케이스의 유연성과 재사용성을 크게 향상시킬 수 있습니다. 파라미터화된 테스트로 같은 동작을 여러 값으로 테스트하고, 데이터 드리븐 테스트로 다양한 입력 값을 사용하여 테스트를 실행할 수 있습니다.

더 자세한 내용은 TestNG 공식 문서를 참조하시기 바랍니다.