[java] Java Cucumber에서 테스트 환경 설정하기

Cucumber는 BDD(Behavior Driven Development)를 지원하는 도구이며, Java Cucumber를 사용하면 자바 언어로 BDD 테스트를 작성할 수 있습니다. 이 글에서는 Java Cucumber를 사용하기 위한 테스트 환경 설정 방법에 대해 알아보겠습니다.

1. 의존성 추가하기

먼저 Maven 또는 Gradle 프로젝트에 Cucumber 의존성을 추가해야합니다. 다음과 같이 pom.xml 에 Maven을 사용하는 경우 Cucumber 의존성을 추가합니다.

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>6.10.4</version>
    <scope>test</scope>
</dependency>

Gradle을 사용하는 경우 build.gradle 파일에 다음 의존성을 추가합니다.

testImplementation 'io.cucumber:cucumber-java:6.10.4'

의존성을 추가한 후 프로젝트를 빌드하면 Cucumber 관련 클래스 및 라이브러리를 사용할 수 있습니다.

2. Feature 파일 작성하기

Cucumber는 Feature 파일을 사용하여 BDD 테스트를 작성합니다. 테스트할 기능을 설명하는 Feature 파일을 작성해야 합니다. Feature 파일은 .feature 확장자를 가지며, 각 Feature는 Scenario로 구분됩니다. Scenario는 테스트 케이스를 나타내며, Background, Given, When, Then, And 등의 키워드를 사용하여 테스트 동작을 정의합니다.

간단한 Feature 예시:

Feature: Login Process
  Scenario: Successful login
    Given the user is on the login page
    When they enter valid credentials
    Then they should be redirected to the home page

3. Step Definitions 작성하기

Step Definitions은 Cucumber에서 Feature 파일의 각 Step에 대한 구현을 제공하는 클래스입니다. Step Definitions 클래스를 생성하고 각 Step에 해당하는 메서드를 작성해야합니다. 메서드의 이름은 Step Definitions에서 사용하는 어노테이션과 동일해야 합니다.

절차에 맞춰 간단한 Step Definitions을 작성해보겠습니다.

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

public class LoginSteps {
    
    @Given("the user is on the login page")
    public void onLoginPage() {
        // login page에 대한 동작 정의
    }
    
    @When("they enter valid credentials")
    public void enterValidCredentials() {
        // 유효한 자격 증명 입력 동작 정의
    }
    
    @Then("they should be redirected to the home page")
    public void redirectToHomePage() {
        // 홈 페이지 리다이렉션 동작 정의
    }
}

4. 테스트 실행하기

테스트를 실행하려면 Cucumber 실행 클래스를 생성해야합니다. 실행 클래스에서 테스트 리포트 형식, Step Definitions 클래스 경로, Feature 파일 경로 등을 지정할 수 있습니다. 여기에서는 단순히 테스트를 실행하기 위한 클래스를 생성하겠습니다.

import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(
    features = "src/test/resources/features",
    glue = "com.example.steps",
    plugin = {"pretty", "html:target/cucumber-reports"}
)
public class CucumberTestRunner {
}

위에서 features 경로는 Feature 파일이 위치한 디렉토리를 의미하며, glue 경로는 Step Definitions 클래스가 위치한 패키지를 의미합니다. plugin 설정은 테스트 리포트 형식을 지정하는데, 여기에서는 prettyhtml 형식으로 테스트 결과를 출력합니다.

테스트를 실행하려면 CucumberTestRunner 클래스를 실행하면 됩니다.

이제 Java Cucumber를 사용하기 위한 기본적인 환경 설정 방법에 대해 알아보았습니다. 이를 통해 BDD 테스트를 작성하고 실행할 수 있습니다. 추가적인 설정이나 기능은 Cucumber의 공식 문서를 참조하시기 바랍니다.

참고 자료