[java] Java Cucumber에서 테스트 데이터 전처리하기

소개

Cucumber는 BDD(Behavior Driven Development)를 위한 테스트 도구로, 도메인 전문가, 개발자, 테스터 간의 협업을 촉진하는데 도움을 줍니다. Cucumber는 자연어로 기술된 시나리오를 실행 가능한 테스트로 변환할 수 있습니다. 이번 포스트에서는 Java 환경에서 Cucumber를 사용해 테스트 데이터를 전처리하는 방법을 알아보겠습니다.

Cucumber 테스트 데이터 전처리하기

Cucumber는 기본적으로 스텝(Step)들을 실행하기 전에 시나리오 테스트 데이터를 가져오는데, 이 과정에서 테스트 데이터를 전처리할 수 있습니다. 테스트 데이터 전처리가 필요한 경우 다음과 같은 방법을 사용할 수 있습니다.

  1. 테스트 데이터를 외부 파일에서 불러오기
  2. 테스트 데이터를 코드 내에 하드코딩하기
  3. 테스트 데이터를 프로그램 로직을 통해 동적으로 생성하기

1. 테스트 데이터를 외부 파일에서 불러오기

외부 파일에서 테스트 데이터를 불러오는 방법은 일반적으로 CSV, JSON, XML 등의 형식을 사용합니다. Cucumber는 이러한 파일 형식을 지원하며, Examples 키워드와 함께 사용할 수 있습니다.

예를 들어, 다음과 같이 CSV 파일에서 테스트 데이터를 불러오고 사용할 수 있습니다.

Scenario Outline: Verify login functionality with multiple users
  Given I am on the login page
  When I enter "<username>" and "<password>"
  Then I should see the dashboard

  Examples:
    | username | password |
    | user1    | pass1    |
    | user2    | pass2    |

2. 테스트 데이터를 코드 내에 하드코딩하기

때로는 테스트 데이터를 외부 파일이 아닌 코드 내에 하드코딩해야 하는 경우도 있습니다. 이때는 Cucumber의 스텝에서 직접 테스트 데이터를 선언하고 사용할 수 있습니다.

예를 들어, 다음과 같이 테스트 데이터를 코드 내에 하드코딩할 수 있습니다.

@Given("I have the following users")
public void iHaveTheFollowingUsers(DataTable users) {
    List<Map<String, String>> userList = users.asMaps(String.class, String.class);
    // 테스트 데이터 사용하기
    // ...
}

3. 테스트 데이터를 프로그램 로직을 통해 동적으로 생성하기

때로는 동적인 테스트 데이터가 필요한 경우도 있습니다. 이때는 Cucumber 스텝 내에서 프로그램 로직을 사용해 테스트 데이터를 동적으로 생성할 수 있습니다.

예를 들어, 다음과 같이 UUID를 사용하여 테스트 데이터를 동적으로 생성할 수 있습니다.

@Given("I have a unique username")
public void iHaveAUniqueUsername() {
    String uniqueUsername = UUID.randomUUID().toString();
    // 테스트 데이터 사용하기
    // ...
}

결론

Cucumber를 사용하면 손쉽게 테스트 데이터를 전처리할 수 있습니다. 외부 파일에서 테스트 데이터를 불러오거나, 코드 내에 하드코딩하거나, 프로그램 로직을 통해 동적으로 생성하는 등의 방법을 사용할 수 있습니다. 이를 통해 테스트 시나리오의 유연성과 재사용성을 높일 수 있으며, 테스트 코드의 가독성과 유지 보수성도 향상시킬 수 있습니다.

참고 자료