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

Cucumber는 BDD(Behavior Driven Development) 테스트를 작성하고 실행하기 위한 도구입니다. 자바와 함께 사용하면 테스트 시나리오를 자연어로 작성할 수 있으며, 테스트 코드를 구현하고 실행하는 과정을 단순화할 수 있습니다.

환경 설정

Java 프로젝트에서 Cucumber를 사용하기 위해서는 몇 가지 설정 단계를 거쳐야 합니다.

1. 의존성 추가하기

먼저 프로젝트의 build 파일에 Cucumber 의존성을 추가해야 합니다. 만약 Maven을 사용하고 있다면 pom.xml 파일에 다음과 같이 의존성을 추가합니다:

<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'

2. Cucumber 실행 파일 생성하기

Cucumber는 테스트 시나리오를 실행하기 위해 실행 파일이 필요합니다. 따라서 프로젝트 루트 디렉토리에 src/test/resources 디렉토리를 생성하고, 그 안에 cucumber.properties 파일을 추가합니다. 이 파일에 다음과 같이 설정을 추가합니다:

# 실행할 테스트 파일 위치
cucumber.options=--glue=your.package.name --features=src/test/resources/features

--glue 옵션은 당신의 스텝 정의 클래스의 패키지를 지정하고, --features 옵션은 테스트 시나리오 파일이 위치한 디렉토리를 지정합니다.

테스트 코드 작성하기

이제 Cucumber를 사용하여 테스트 시나리오를 작성하고 실행할 준비가 되었습니다. 테스트 코드는 Gherkin 형식으로 작성됩니다. Gherkin은 자연어에 가까운 형태로 테스트 시나리오를 기술하기 위한 언어입니다.

예를 들어, 다음과 같은 간단한 시나리오를 작성해보겠습니다:

Feature: 계산기
    사용자는 숫자를 더하고 빼는 기능을 사용할 수 있어야 한다.

Scenario: 두 숫자를 더한다
    Given 계산기가 준비되어 있다
    When 숫자 5와 3을 더한다
    Then 결과는 8이어야 한다

Scenario: 두 숫자를 뺀다
    Given 계산기가 준비되어 있다
    When 숫자 10에서 3을 뺀다
    Then 결과는 7이어야 한다

위의 시나리오를 구현하기 위해 테스트 코드를 작성해야 합니다. 테스트 코드는 Cucumber의 스텝 정의 클래스에서 작성할 수 있습니다. 예를 들어:

package your.package.name;

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

public class CalculatorSteps {

    Calculator calculator;
    int result;

    @Given("계산기가 준비되어 있다")
    public void calculatorIsInitialized() {
        calculator = new Calculator();
    }

    @When("숫자 {int}와 {int}을 더한다")
    public void addNumbers(int num1, int num2) {
        result = calculator.add(num1, num2);
    }

    @When("숫자 {int}에서 {int}을 뺀다")
    public void subtractNumbers(int num1, int num2) {
        result = calculator.subtract(num1, num2);
    }

    @Then("결과는 {int}이어야 한다")
    public void verifyResult(int expectedResult) {
        assertEquals(expectedResult, result);
    }

}

위의 코드에서 @Given, @When, @Then 애노테이션은 Gherkin에서 사용된 키워드와 일치하는 메서드를 선언합니다. 이렇게 선언된 메서드는 실제로 테스트 코드의 로직을 구현하는 부분입니다.

테스트 실행하기

이제 테스트를 실행할 준비가 모두 되었습니다. IDE나 빌드 도구를 사용하여 테스트를 실행할 수 있습니다. 예를 들어, Maven을 사용하는 경우 터미널에서 다음과 같이 실행할 수 있습니다:

mvn test

테스트 실행이 시작되면 Cucumber는 시나리오를 읽고 스텝 정의 클래스에 정의된 메서드를 순서대로 호출하여 테스트를 수행합니다.

결론

Java에서 Cucumber를 사용하여 BDD 테스트를 작성하고 실행하는 방법을 알아보았습니다. Cucumber는 테스트 시나리오를 자연어로 기술할 수 있으므로, 고객과 개발자 간의 의사소통을 원활하게 할 수 있습니다.