[java] TestNG를 활용한 다양한 테스트 데이터 생성 및 활용

TestNG는 Java 언어로 작성된 테스트 프레임워크로, 다양한 테스트 데이터를 생성하고 활용하는 기능을 제공합니다. 이 기능을 활용하여 테스트 시나리오를 다양하게 구성할 수 있습니다.

1. @DataProvider 어노테이션을 활용한 데이터 생성

@Test 메서드에 @DataProvider 어노테이션을 사용하여 데이터를 생성할 수 있습니다. 해당 어노테이션은 데이터를 반환하는 메서드와 연결하여 테스트 메서드에 데이터를 제공합니다.

@Test(dataProvider = "testData")
public void testMethod(String data) {
    // 테스트 메서드 구현
}

@DataProvider(name = "testData")
public Object[][] provideData() {
    return new Object[][] {
        { "Data1" },
        { "Data2" },
        { "Data3" }
    };
}

위의 코드는 testData라는 데이터 프로바이더 메서드를 정의하고, testMethod 메서드에서 해당 데이터를 사용하는 예시입니다. testMethod는 각각의 데이터에 대해 테스트를 실행합니다.

2. 외부 데이터 파일을 활용한 데이터 생성

때로는 테스트 데이터를 외부 파일에서 읽어와 사용해야 할 때가 있습니다. TestNG에서는 @DataProvider 어노테이션과 함께 외부 파일을 읽어와 데이터를 생성할 수 있습니다.

@Test(dataProvider = "testData")
public void testMethod(String data) {
    // 테스트 메서드 구현
}

@DataProvider(name = "testData")
public Object[][] provideData() {
    String filePath = "testdata.txt";
    List<String> lines = readDataFromFile(filePath);
    
    Object[][] data = new Object[lines.size()][1];
    for (int i = 0; i < lines.size(); i++) {
        data[i][0] = lines.get(i);
    }
    
    return data;
}

private List<String> readDataFromFile(String filePath) {
    // 외부 파일로부터 데이터를 읽어오는 로직 구현
}

위의 코드는 testData라는 데이터 프로바이더 메서드를 정의하고, testMethod 메서드에서 해당 데이터를 사용하는 예시입니다. 외부 파일로부터 데이터를 읽어오는 로직은 readDataFromFile 메서드에서 처리합니다.

3. 데이터 세트 조합을 통한 테스트 시나리오 생성

TestNG는 여러 데이터 세트를 조합하여 테스트 시나리오를 생성할 수 있는 기능도 제공합니다. 이를 활용하면 다양한 테스트 케이스를 간편하게 생성할 수 있습니다.

@Test(dataProvider = "testData")
public void testMethod(String data1, String data2) {
    // 테스트 메서드 구현
}

@DataProvider(name = "testData")
public Object[][] provideData() {
    String[] data1Set = { "Data1", "Data2" };
    String[] data2Set = { "Value1", "Value2" };
    
    List<Object[]> data = new ArrayList<>();
    for (String data1 : data1Set) {
        for (String data2 : data2Set) {
            data.add(new Object[] { data1, data2 });
        }
    }
    
    return data.toArray(new Object[data.size()][]);
}

위의 코드는 testData라는 데이터 프로바이더 메서드를 정의하고, testMethod 메서드에서 해당 데이터를 사용하는 예시입니다. data1Set과 data2Set에 대한 조합을 통해 테스트 시나리오를 생성하고, 각각의 데이터에 대해 testMethod를 실행합니다.

결론

TestNG를 통해 다양한 테스트 데이터를 생성하고 활용하는 방법에 대해 알아보았습니다. @DataProvider 어노테이션과 외부 파일을 사용하거나 데이터 세트를 조합하여 테스트 시나리오를 유연하게 구성할 수 있습니다. TestNG를 활용하여 효과적이고 다양한 테스트를 수행해보세요.

참고자료: