[java] Java Cucumber에서 다중 테스크나리오 작성하기

Cucumber는 BDD(Behavior Driven Development) 방법론을 지원하는 테스트 프레임워크입니다. Java로 개발된 Cucumber는 테스트 시나리오를 자연어로 작성하여 개발자와 비개발자 간의 의사소통을 원활하게 합니다. 이번 글에서는 Java Cucumber에서 다중 테스트 시나리오를 작성하는 방법에 대해 알아보겠습니다.

1. Feature 파일 작성하기

Cucumber에서 테스트 시나리오는 feature 파일에 작성됩니다. 각 시나리오는 Scenario로 정의되며, 여러 개의 시나리오를 한 번에 실행하고 싶을 때는 다중 시나리오를 작성해야 합니다.

아래는 예시 feature 파일의 일부입니다.

Feature: 회원 관리

  Scenario: 회원 등록
    Given 사용자가 회원 등록 페이지에 접속한다
    When 사용자가 아이디, 비밀번호, 이메일을 입력한다
    And 사용자가 회원 가입 버튼을 클릭한다
    Then 회원 등록이 완료된다

  Scenario: 회원 로그인
    Given 사용자가 로그인 페이지에 접속한다
    When 사용자가 아이디와 비밀번호를 입력한다
    And 사용자가 로그인 버튼을 클릭한다
    Then 로그인이 완료된다

  Scenario: 회원 조회
    Given 관리자가 회원 관리 페이지에 접속한다
    When 관리자가 회원 아이디를 입력한다
    And 관리자가 회원 조회 버튼을 클릭한다
    Then 회원 정보가 출력된다

위 예시에서는 FeatureScenario 키워드를 사용하여 테스트 시나리오를 정의했습니다. 이렇게 다중 시나리오를 작성하면 한 번에 여러 시나리오를 실행할 수 있습니다.

2. Step Definitions 작성하기

Cucumber에서는 각 테스트 스텝을 구현하는 Step Definitions가 필요합니다. Step Definitions는 테스트 시나리오에서 사용되는 자연어 스텝을 실제 코드로 매핑하는 역할을 합니다.

아래는 예시 스텝 정의 클래스의 일부분입니다.

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

public class MemberStepDefinitions {
    @Given("사용자가 전화번호부 페이지에 접속한다")
    public void user_access_address_book_page() {
        // 전화번호부 페이지에 접속하는 코드 작성
    }

    @When("사용자가 이름과 전화번호를 입력한다")
    public void user_enter_name_and_phone_number() {
        // 이름과 전화번호를 입력하는 코드 작성
    }

    @Then("정보가 저장된다")
    public void information_is_saved() {
        // 정보가 저장되는 코드 작성
    }
}

위의 예시 코드에서는 @Given, @When, @Then 어노테이션을 사용하여 테스트 시나리오의 자연어 스텝을 실제 코드와 연결시켰습니다. 예를 들어, Given 사용자가 회원 등록 페이지에 접속한다user_access_address_book_page 메소드로 매핑됩니다.

3. 테스트 실행하기

Java Cucumber에서 다중 시나리오를 실행하려면 테스트 실행 클래스를 작성해야 합니다. 테스트 클래스에서는 @CucumberOptions 어노테이션을 사용하여 테스트에 대한 구성 옵션을 지정할 수 있습니다.

import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;

@CucumberOptions(
    features = "src/test/features",
    glue = "your.package.name"
)
public class RunCucumberTest extends AbstractTestNGCucumberTests {
}

위의 예시 코드에서는 테스트 시나리오 파일이 있는 features 디렉토리와 Step Definitions이 있는 패키지를 glue 옵션으로 설정했습니다. 필요한 옵션을 추가로 설정하십시오.

테스트를 실행하려면 위의 클래스를 Run As -> TestNG Test로 실행하면 됩니다.

결론

이번 글에서는 Java Cucumber에서 다중 테스트 시나리오를 작성하는 방법에 대해 알아보았습니다. Cucumber를 사용하면 자연어로 테스트 시나리오를 작성하여 개발자와 비개발자 간의 의사소통을 원활하게 할 수 있습니다. Java로 개발된 Cucumber를 사용하여 직관적이고 간결한 테스트 코드를 작성해보세요!

참고자료