[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-java
및 cucumber-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) 원칙에 따라 테스트를 작성하고 실행하는 것은 애플리케이션의 견고성을 확보하는 데 도움이 됩니다.