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의 스텝을 재사용하는 방법을 알아보았습니다. 재사용 가능한 스텝을 만들고 다른 시나리오에서 호출하여 중복 코드를 줄일 수 있습니다. 스텝의 재사용을 통해 테스트 코드의 가독성과 유지보수성을 높일 수 있습니다.
더 자세한 내용은 아래 참고 자료를 참고하시기 바랍니다.