[ 인수테스트 (AT : Acceptance Test) ]
인수테스트란 요구사항을 작성하는데 집중.
블랙박스 테스트의 성격을 가지므로 시스템 내부 코드를 직접 호출하는 것이 아닌 외부에서 요청하는 방식으로 검증.
* 블랙박스란? 결과물의 내부 구현이나 사용된 기술을 기반으로 검증하기 보단 표면적으로 확인할 수 있는 요소를 바탕으로 검증
* ATDD(Acceptance Test-Driven Development)는 기획 단계부터 인수 테스트를 통해 공통의 이해를 도모해 프로젝트를 진행하는 방법
@SpringBootTest 웹서버를 사용하여 테스트
webEnvironment 설정을 통해 웹 서버 환경을 지정
[ MockMvc vs RestAssured vs WebTestClient ]
1. MockMvc
@SpringBootTest 의 webEnvironment.MOCK과 함께 사용가능.
mocking된 web environment(ex Tomcat) 환경에서 테스트
2. WebTestClient
@SpringBootTest의 webEnvironment.RANDOM_PORT나 DEFINED_PORT와 함께 사용, Netty를 기본으로 사용
3. RestAssured
실제 web environment(Apache Tomcat)을 사용하여 테스트
[ RestAssured 사용법 ]
RestAssured.given().log().all()
.body(params)
.contentType(MediaType.APPLICATION_JSON_VALUE)
.when()
.post("/~")
.then().log().all()
.statusCode(HttpStatus.CREATED.value())
.header("", notNullValue();
[ 인수 조건 작성법 ]
Feature: 간략한 기능 서술
Scenario: 시나리오 제목
Given: 사전조건
And: 앞선 내용의 추가적인 내용
And: 앞선 내용의 추가적인 내용
When: 발생해야하는 이벤트
Then: 사후조건