[java] Java Cucumber에서 다른 스텝 재사용하기

Cucumber는 행동 주도 개발(BDD)을 지원하는 도구로서, 자연어로 작성된 시나리오를 테스트 코드로 변환하여 실행하는 기능을 제공합니다. Cucumber의 장점 중 하나는 스텝(Step)의 재사용성입니다. 스텝을 재사용하면 중복된 코드를 줄이고 유지보수성을 높일 수 있습니다. 이번 글에서는 Java로 작성된 Cucumber에서 다른 스텝을 재사용하는 방법을 알아보겠습니다.

스텝 재사용하기

Cucumber에서 스텝은 시나리오의 각 단계를 나타냅니다. 예를 들어, “사용자는 로그인 페이지를 방문한다”라는 스텝은 사용자가 로그인 페이지를 방문하는 동작을 정의합니다. 이 스텝을 재사용하려면 다른 시나리오에서도 이 스텝을 호출할 수 있어야 합니다.

재사용 가능한 스텝을 정의하기 위해 다음과 같은 스텝 클래스를 작성할 수 있습니다.

import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;
import io.cucumber.java.en.Then;

public class StepDefinitions {
    @Given("사용자는 로그인 페이지를 방문한다")
    public void visitLoginPage() {
        // 로그인 페이지 방문하는 코드 작성
    }

    @When("사용자는 {string} 유저네임으로 로그인한다")
    public void login(String username) {
        // 로그인하는 코드 작성
    }

    @Then("로그인이 성공한다")
    public void loginSuccessful() {
        // 로그인 성공 검증하는 코드 작성
    }
}

위의 예시 코드에서 @Given, @When, @Then 애노테이션을 사용하여 Cucumber 스텝들을 정의합니다. 각 스텝은 해당하는 시나리오 단계의 키워드와 메서드 이름을 매핑하게 됩니다.

다른 스텝 호출하기

재사용 가능한 스텝을 다른 시나리오에서 호출하려면 다음과 같이 And, But 키워드를 사용하여 스텝을 작성합니다.

import io.cucumber.java.en.And;

public class AnotherStepDefinitions {
    @And("사용자는 장바구니에 상품을 추가한다")
    public void addProductToCart() {
        // 상품을 장바구니에 추가하는 코드 작성

        // 다른 스텝 호출
        StepDefinitions.visitLoginPage();
        StepDefinitions.login("username");
        StepDefinitions.loginSuccessful();
    }
}

위의 예시 코드에서 @And 애노테이션을 사용하여 새로운 스텝을 작성하고, 다른 시나리오에서 스텝을 호출하는 부분을 확인할 수 있습니다. StepDefinitions 클래스의 메서드를 호출하여 해당 스텝들을 실행합니다.

요약

이렇게 Java에서 Cucumber의 스텝을 재사용하는 방법을 알아보았습니다. 재사용 가능한 스텝을 만들고 다른 시나리오에서 호출하여 중복 코드를 줄일 수 있습니다. 스텝의 재사용을 통해 테스트 코드의 가독성과 유지보수성을 높일 수 있습니다.

더 자세한 내용은 아래 참고 자료를 참고하시기 바랍니다.

참고 자료