[java] Java Cucumber에서 데이터를 파일에서 읽어오는 방법

Java Cucumber는 BDD(Behavior-Driven Development)를 구현하기위한 도구로, 시나리오에 기반하여 테스트를 작성하고 실행하는 데 사용됩니다. 테스트 데이터를 파일에서 읽어오는 것은 테스트 시나리오를 유연하게 유지하고 중복을 피할 수 있는 좋은 방법입니다. 이 글에서는 Java Cucumber에서 데이터를 파일에서 읽어오는 방법을 알아보겠습니다.

1. 데이터 파일 준비

먼저, 테스트에 사용할 데이터를 포함한 파일을 준비해야 합니다. 일반적으로 텍스트 파일(.txt)이나 CSV 파일(.csv)을 사용할 수 있습니다. 해당 파일은 어떤 데이터든 포맷과 구조에 따라 작성될 수 있습니다. 예를 들어, 다음과 같은 CSV 파일이 있다고 가정해봅시다.

이름,나이,이메일
John Smith,25,john@example.com
Jane Doe,30,jane@example.com

2. 데이터를 로드하는 스텝 정의

다음으로, Cucumber에서 데이터 파일을 로드하고 테스트에 사용할 수 있는 형식으로 변환하는 스텝을 정의해야 합니다. 이를 위해 @Given 어노테이션이 포함된 메서드를 작성합니다. 메서드 내에서는 파일을 읽고 데이터를 적절한 자료구조에 저장하는 로직을 구현합니다.

import cucumber.api.java.Before;
import cucumber.api.java.en.Given;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.opencsv.CSVReader;

public class StepDefinitions {

    private List<DataObject> dataObjects;

    @Before
    public void setUp() {
        dataObjects = new ArrayList<>();
    }

    @Given("^데이터 파일 \"([^\"]*)\"에서 데이터를 로드합니다$")
    public void loadDataFromFile(String filePath) {
        try (CSVReader reader = new CSVReader(new FileReader(new File(filePath)))) {
            String[] line;
            while ((line = reader.readNext()) != null) {
                DataObject dataObject = new DataObject(line[0], Integer.parseInt(line[1]), line[2]);
                dataObjects.add(dataObject);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 테스트 메서드들 ...
}

위의 예제에서는 CSVReader를 사용하여 CSV 파일을 읽고 데이터 객체에 저장하는 방법을 보여줍니다. 데이터를 표현하는 DataObject 클래스는 테스트에 필요한 필드를 포함하고 있습니다.

3. 데이터 사용하기

이제 로드한 데이터를 테스트 시나리오에서 사용할 수 있습니다. 해당 테스트에서는 @And 어노테이션에 해당하는 메서드에서 데이터를 사용하도록 설정하면 됩니다.

import cucumber.api.java.en.And;

public class StepDefinitions {

    // 이전 코드 생략...

    @And("^데이터를 사용하여 테스트를 수행합니다$")
    public void performTestWithLoadedData() {
        for (DataObject dataObject : dataObjects) {
            // 데이터를 사용한 테스트 로직 적용
        }
    }
}

이제 Cucumber에서 데이터 파일을 로드하고 읽어온 데이터를 사용하여 테스트를 실행할 수 있습니다. 이를 통해 테스트 케이스를 보다 유동적으로 관리하고 중복을 피할 수 있습니다.

결론

이렇게 Java Cucumber에서 데이터를 파일에서 읽어오는 방법을 알아보았습니다. 테스트 데이터를 파일로부터 로드하여 테스트 시나리오에 적용하는 것은 테스트 관리를 용이하게 하고 코드의 재사용성을 높일 수 있는 좋은 방법입니다. Java Cucumber를 사용하는 개발자들은 이를 활용하여 보다 효율적인 테스트 작성을 할 수 있습니다.

참고 자료: