[java] Java Cucumber에서 API 테스트 실행

소개

API 테스트는 애플리케이션의 기능을 테스트하기 위해 가장 일반적으로 사용되는 방법 중 하나입니다. Java Cucumber는 BDD (Behavior-Driven Development) 엔진을 사용하여 동적인 API 테스트를 작성하는 데 도움이 되는 강력한 도구입니다.

설정

Java Cucumber를 사용하기 위해 프로젝트에 다음 종속성을 추가해야 합니다:

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>6.10.4</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>6.10.4</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>io.rest-assured</groupId>
    <artifactId>rest-assured</artifactId>
    <version>4.3.1</version>
    <scope>test</scope>
</dependency>

cucumber-javacucumber-junit는 Cucumber 자체 동작을 위해 필요하며, rest-assured는 API 테스트를 위한 HTTP 클라이언트 라이브러리입니다.

스텝 정의하기

Cucumber에서는 테스트 단계를 구체화하기 위해 스텝 정의를 작성해야 합니다. 다음은 API 테스트를 위한 기본 스텝 정의의 예입니다:

import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;
import io.cucumber.java.en.Then;
import io.restassured.RestAssured;
import io.restassured.response.Response;

public class APITestSteps {
    
    private Response response;
    
    @Given("^API의 엔드포인트가 \"([^\"]*)\"인 경우$")
    public void setApiEndpoint(String endpoint) {
        RestAssured.baseURI = endpoint;
    }
    
    @When("^API를 호출하면$")
    public void callApi() {
        response = RestAssured.get();
    }
    
    @Then("^응답 상태 코드는 (\\d+) 이어야 합니다$")
    public void checkStatusCode(int expectedStatusCode) {
        response.then().statusCode(expectedStatusCode);
    }
    
    @Then("^응답 바디는 \"([^\"]*)\"를 포함해야 합니다$")
    public void checkResponseBody(String expectedResponseBody) {
        response.then().body(containsString(expectedResponseBody));
    }
}

기능 파일 작성하기

API 테스트를 명세하는 기능 파일을 작성해야 합니다. 기능 파일은 .feature 확장자를 가지며 테스트 시나리오와 스텝 정의를 통합하는 역할을 합니다. 다음은 API 테스트를 위한 기능 파일의 예입니다:

Feature: API 테스트

Scenario: API 호출 및 응답 확인
    Given API의 엔드포인트가 "https://api.example.com"인 경우
    When API를 호출하면
    Then 응답 상태 코드는 200 이어야 합니다
    And 응답 바디는 "success"를 포함해야 합니다

테스트 실행하기

API 테스트를 실행하려면 다음 명령을 터미널에서 실행하십시오:

mvn test

Cucumber는 설정된 스텝 정의와 기능 파일을 기반으로 테스트를 실행하고 결과를 터미널에 출력합니다.

결론

Java Cucumber를 사용하여 API 테스트를 작성하면 애플리케이션의 기능을 실제 시나리오에 가깝게 테스트할 수 있습니다. BDD (Behavior-Driven Development) 원칙에 따라 테스트를 작성하고 실행하는 것은 애플리케이션의 견고성을 확보하는 데 도움이 됩니다.