[java] Java Cucumber에서 회원 삭제 테스트 실행하기

Cucumber는 BDD(Behavior-Driven Development)를 지원하는 자바 기반의 테스트 프레임워크입니다. 이번 예제에서는 Java에서 Cucumber를 사용하여 회원 삭제 테스트를 실행하는 방법에 대해 알아보겠습니다.

Step 1: 프로젝트 설정

먼저, Maven 또는 Gradle과 같은 의존성 관리 도구를 사용하여 프로젝트에 Cucumber를 추가해야 합니다. pom.xml 파일에 다음 의존성을 추가합니다.

<dependencies>
    <!-- Cucumber dependencies -->
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>7.0.0</version>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>7.0.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Step 2: Feature 파일 작성

Cucumber에서는 시나리오를 작성하는데에 Feature 파일을 사용합니다. Feature 파일은 사용자의 요구사항을 나타내는 특징(Feature)과 시나리오(Scenario)로 구성됩니다. 아래와 같이 Feature 파일을 작성합니다.

Feature: 회원 관리
    회원을 삭제할 때, 삭제 기능이 제대로 동작하는지 확인한다.

Scenario: 회원 삭제
    Given 회원 ID가 "12345"인 회원이 존재한다.
    When 회원 ID가 "12345"인 회원을 삭제한다.
    Then 회원 ID가 "12345"인 회원이 삭제되었다.

Step 3: Step Definitions 작성

Step Definitions은 Feature 파일의 각 스텝에 대한 실제 실행 로직을 정의하는 부분입니다. Step Definitions 클래스를 작성하여 각 스텝에 대한 메서드를 구현합니다. 아래와 같이 Step Definitions 클래스를 작성합니다.

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

public class MemberStepDefinitions {

    @Given("회원 ID가 {string}인 회원이 존재한다.")
    public void givenMemberExists(String memberId) {
        // 회원이 존재하는지 확인하는 로직을 구현한다.
    }

    @When("회원 ID가 {string}인 회원을 삭제한다.")
    public void whenDeleteMember(String memberId) {
        // 회원을 삭제하는 로직을 구현한다.
    }

    @Then("회원 ID가 {string}인 회원이 삭제되었다.")
    public void thenMemberDeleted(String memberId) {
        // 회원이 정상적으로 삭제되었는지 확인하는 로직을 구현한다.
    }
}

Step 4: 테스트 실행

이제 테스트를 실행할 차례입니다. RunCucumberTest라는 별도의 테스트 클래스를 작성하여 Cucumber를 실행합니다. 아래와 같이 코드를 작성합니다.

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

@RunWith(Cucumber.class)
@CucumberOptions(features = "classpath:features")
public class RunCucumberTest {
}

위 코드에서 features = "classpath:features"는 Feature 파일이 위치한 디렉토리 경로를 지정합니다. Feature 파일이 다른 디렉토리에 있을 경우 해당 경로를 수정해야 합니다.

이제 테스트를 실행하면 Cucumber가 Feature 파일에 정의된 시나리오를 차례로 실행하고 결과를 출력합니다.

결론

이번 예제에서는 Cucumber를 사용하여 Java 언어로 회원 삭제 테스트를 실행하는 방법에 대해 알아보았습니다. Cucumber를 사용하면 개발자와 비 개발자 간의 의사소통을 원활하게 할 수 있으며, 테스트 결과를 쉽게 이해할 수 있습니다. Cucumber를 활용하여 BDD 접근 방식으로 개발하면 개발 프로세스를 더욱 효율적이고 직관적으로 관리할 수 있습니다.

참고 자료