[java] Java Cucumber에서 데이터 테이블 사용

Cucumber는 테스트 작성을 위한 BDD(Behavior Driven Development) 도구로 널리 사용되고 있습니다. Cucumber를 사용하면 테스트 시나리오를 자연어로 작성하고 해당 시나리오를 실행하는 스텝을 구현할 수 있습니다.

Cucumber에서는 자연어로 작성된 테스트 시나리오에서 변수나 데이터를 사용할 수 있습니다. 이를 테이블 형태로 표현할 수 있는데, 이번 포스트에서는 Java에서 Cucumber를 사용하는 경우 데이터 테이블을 어떻게 활용하는지 알아보겠습니다.

데이터 테이블 작성하기

Cucumber에서 데이터 테이블은 Examples 키워드를 사용하여 작성합니다. 예를 들어, 사용자 등록 테스트 시나리오에서 사용자 정보를 테이블 형태로 표현하고 싶다면 다음과 같이 작성할 수 있습니다.

Given 사용자가 다음과 같이 등록되어 있다:
| 이름  | 이메일             | 전화번호         |
| Alice | alice@example.com | 123-456-7890     |
| Bob   | bob@example.com   | 987-654-3210     |

위 예시에서는 Given 스텝에서 사용자가 등록되어 있다는 전제하에, 사용자 정보를 테이블 형태로 작성하였습니다.

Java에서 데이터 테이블 가져오기

Java에서 Cucumber를 사용할 때, 테이블 데이터를 가져오기 위해서는 Cucumber에서 제공하는 DataTable 클래스를 활용합니다. 다음은 Java에서 테이블 데이터를 가져오는 코드의 예시입니다.

@Given("^사용자가 다음과 같이 등록되어 있다:$")
public void 사용자_등록(DataTable dataTable) {
    List<Map<String, String>> userList = dataTable.asMaps(String.class, String.class);

    for (Map<String, String> user : userList) {
        String 이름 = user.get("이름");
        String 이메일 = user.get("이메일");
        String 전화번호 = user.get("전화번호");

        // 사용자 등록 로직
        // ...
    }
}

위 코드에서는 @Given 어노테이션을 이용하여 해당 메소드가 Given 스텝에 대응한다는 것을 명시하고 있습니다. DataTable 객체를 매개변수로 받아 asMaps 메소드를 통해 테이블 데이터를 List<Map<String, String>> 형태로 변환합니다. 이후 해당 데이터를 이용하여 사용자 등록 로직을 구현할 수 있습니다.

결론

이렇게 Java에서 Cucumber를 사용하면서 데이터 테이블을 활용하는 방법에 대해 알아보았습니다. 데이터 테이블을 사용하면 테스트 시나리오에서 다양한 데이터를 보다 효율적으로 다룰 수 있습니다. 자세한 내용은 Cucumber 문서를 참고하시기 바랍니다.

참고 자료