[java] Java Cucumber에서 스텝마다 대기 시간 설정하기

Cucumber는 테스트 자동화 프레임워크로, 개발자와 비-개발자 모두가 이해할 수 있는 테스트 시나리오를 작성하고 실행할 수 있습니다. 자바 기반의 Cucumber를 사용할 때, 특정 스텝마다 대기 시간을 설정하는 방법에 대해 알아보겠습니다.

1. 대기 시간 설정을 위한 기능 추가

먼저, 프로젝트에 대기 시간 설정 기능을 추가해야 합니다. 다음과 같이 WaitUtils 클래스를 생성합니다.

import java.util.concurrent.TimeUnit;

public class WaitUtils {
    public static void waitForSeconds(int seconds) {
        try {
            TimeUnit.SECONDS.sleep(seconds);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

이 클래스는 TimeUnit.SECONDS.sleep() 메서드를 사용하여 지정된 시간(초) 동안 대기합니다.

2. 스텝에 대기 시간 추가하기

Cucumber 테스트 시나리오에서 스텝에 대기 시간을 추가하려면 다음과 같이 @And 어노테이션과 함께 메서드를 작성합니다.

import cucumber.api.java.en.And;

public class StepDefinitions {

    @And("^대기 (\\d+)초$")
    public void waitSeconds(int seconds) {
        WaitUtils.waitForSeconds(seconds);
    }

    // 다른 스텝 정의...
}

위의 예시에서는 스텝의 정규표현식에서 (\\d+)를 사용하여 숫자 값을 캡처하고, 이 값을 int seconds 매개변수로 전달하여 WaitUtils.waitForSeconds() 메서드를 호출합니다.

3. 테스트 시나리오에 대기 시간 추가하기

Cucumber 테스트 시나리오에서 대기 시간을 사용하려면 다음과 같이 Feature 파일에서 스텝을 작성합니다.

Feature: 대기 시간 설정 테스트

  Scenario: 스텝별 대기 시간 테스트
    Given 사용자가 홈페이지에 접속한다
    And 대기 5초
    When 사용자가 로그인을 시도한다
    Then 로그인이 성공해야 한다
    And 대기 2초
    And 사용자가 로그아웃한다
    Then 로그아웃이 성공해야 한다

위의 예시에서는 And 대기 5초And 대기 2초와 같이 스텝에 대기 시간을 추가했습니다.

테스트 실행 중에 Cucumber는 WaitUtils.waitForSeconds() 메서드를 호출하여 지정된 시간 동안 대기합니다.

결론

Java 기반의 Cucumber에서 스텝마다 대기 시간을 설정하는 방법을 알아보았습니다. 대기 시간을 추가하는 것은 테스트 시나리오를 더욱 유연하고 신뢰성있게 만들어줍니다.