TestController.java 파일을 열고 클래스 이름 위에 마우스 커서를 놓고 클릭한 다음 Alt + Enter 을 누르면 [Create Test] 가 나타난다.
위의 Create Test를 누르면 아래와 같은 창이 나타난다.
OK를 누르면 TestControllerTest.java 파일이 test/java/패키지 아래에 생성된다. 생성된 파일을 다음과 같이 작성한다. 여기서는 테스트 코드를 작성하기 위해 또 새로운 Annotation을 사용했다.
🚀 < 위의 코드에서 꼭 알아둬야 할 Annotation > 🚀
<@SpringBootTest>
@SpringBootTest Annotation은 Main Application class에 추가하는 Annotation인 @SpringBootApplication이 있는 Class를 찾고, 그 Class에 포함되어 있는 Bean을 찾은 다음에 Test용 "Aplication Context"라는 것을 만든다.
<@AutoConfigureMockMvc>
@AutoConfigureMockMvc는 MockMvc를 생성하고 자동으로 구성하는 Annotation이다. MockMvc는 Aplication을 서버에 배포하지 않고도 Test용 MVC환경을 만들어 요청 및 전송, 응답 기능을 제공하는 유틸리티 클래스다. 즉, 컨트롤러를 테스트 할 때 사용되는 클래스다.
<@BeforeEach>
테스트를 실행하기 전에 실행하는 메서드에 적용하는 Annotation. 여기서는 MockMvcSetUp() 메서드를 실행해 MockMvc를 설정해준다.
<@AfterEach>
테스트를 실행한 이후에 실행하는 메서드에 적용하는 Annotation. 여기서는 cleanUp() 메서드를 실행해 member 테이블에 있는 데이터들을 모두 삭제해준다.
이제, Logic을 Test하는 코드를 작성해보자.
기존의 작성한 코드에 아래의 코드를 추가한다.
Given | 멤버를 저장한다. |
When | 멤버 리스트를 조회하는 API를 호출한다. |
Then | 응답 코드가 200 OK,반환받은 값 중에 0번째 요소의 id와 name이 저장된 값과 같은지 확인한다. |
위의 코드 중 ① 위치에서 perform() 메서드는 요청을 전송하는 역할을 하는 메서드다. 결과로 ResultActions 객체를 받고, ResultActions 객체는 반환값을 검증하고 확인하는 andExpect() 메서드를 제공해준다.
② 위치에서 .accpet 메서드는 요청을 보낼 때 무슨 타입으로 응답을 받을지 결정하는 메서드다. JSON.XML등 다양한 타입이 있으나, 여기서는 JSON을 받는다고 명시해두도록 한다.
③ 위치에서 .andExpect()메서드는 응답을 검증한다. TestController에서 만든 API는 응답으로 OK(200)을 반환하므로 이에 해당하는 메서드인 isOK를 사용해 응답 코드가 OK(200)인지 확인한다.
④ 위치에서 jsonPath("$[0].${필드명}")은 JSON의 응답값의 값을 가져오는 역할을 하는 메서드이다. 0번째 배열에 들어있는 객체의 id,name값을 가져오고, 저장된 값과 같은지 확인한다.
🎶< HTTP 주요 응답 코드 >🎶
코드 | 매핑 메서드 | 설명 |
200 OK | isOk() | HTTP응답 코드가 200 OK인지 검증 |
201 Created | isCreated() | HTTP응답 코드가 201 Created인지 검증 |
400 Bad Request | isBadRequest() | HTTP 응답 코드가 400 Bad Request인지 검증 |
403 Forbidden | isForbidden() | HTTP 응답 코드가 403 Forbidden인지 검증 |
404 Not Found | isNotFound() | HTTP 응답 코드가 404 Not Found 인지 검증 |
400번대 응답 코드 | is4xxClientError() | HTTP 응답 코드가 400번대 응답 코드인지 검증 |
500 Internal Server Error | isInternalServerError() | HTTP 응답 코드가 500 Internal Server Error인지 검증 |
500번대 응답 코드 | is5xxServerError() | HTTP 응답 코드가 500번대 응답 코드인지 검증 |
테스트 코드가 완성되었으니 Run "TestControllerTest"를 선택한다.
테스트가 완료 되었음을 확인 할 수 있다.
Reference : 출처 : 스프링 부트 3 백엔드 개발자 되기 - 자바 편
http://www.yes24.com/Product/Goods/118625612
'스프링부트' 카테고리의 다른 글
JPA와 하이버네이트,엔티티 매니저,프록시 엔티티,영속성 컨텍스트 (0) | 2023.05.28 |
---|---|
DBMS와 ORM (0) | 2023.05.27 |
JUnit (0) | 2023.05.23 |
Test Code (0) | 2023.05.18 |
Spring Boot Request~Response Process (0) | 2023.05.18 |