JUnit
- TDD : 테스트 주도개발
- 유지 보수 및 운영 환경 에러를 방지하기 위해 단위별로 검증하는 테스트 프레임워크
- 단위테스트
- JUnit : 자바 유닛 테스트 프레임워크
- @Test
- 테스트 수행하는 메소드 지정
- 각각의 테스트가 서로 영향을 주지 않고 독립적으로 실행되는 것을 지향
- SpringBootTest
- Spring Boot 테스트를 실행하는 테스트 클래스에 지정할 수 있는 Annotation
- MockBean
- Spring Boot Container 필요, Bean이 Container에 존재
- Spring Bean이 아닌 Mock Bean 주입
- MockMvc
- 서버에 배포하지 않고 테스트용 MVC 환경을 만들어 요청 및 전송, 응답기능을 제공하는 유틸리티 클래스
- perform : 설정한 MockMvc 실행 / 요청에 대한 설정 / Expect 메서드 이용 테스트
- MockMvcRequestBuilders
- param / params / queryParam : 요청 파라미터 설정
- header / headers : 요청 헤더 설정 / contentType, accept.. 특정 헤더 설정 메서드 제공
- cookie : 쿠키를 설정한다.
4.content : 요청 본문 설정
- andExpect : 실행결과를 검증하는 MockMvcResultMatchers에서 제공하는 ResultMatcher을 지정
- MockMvcResultMatchers
- status : HTTP 상태 코드 검증
- header : 응답 해더의 상태 검증
- cookie : 쿠키 상태 검증
- content : 응답 본문 내용 검증 jsonPath나 xpath와 같은 특정 콘텐츠를 위한 메서드 제공
- view : 컨트롤러가 반환한 뷰 이름 검증
- forwardedUrl : 이동대상의 경로를 검증 패턴으로 검증할떄는 forwardedUrlPattern 메서드를 사용
- redirectedUrl : 리다이렉트 대상의 경로 또는 URL 검증 패턴으로 검증할때는 redirectedUrlPattern 메서드를 사용
- model : 스프링 MVC 모델 상태 검증
- andDO : 실행 결과를 로그로 출력
- WebMvcTest
- MVC 테스트
- 웹에서 테스트하기 힘든 컨트롤러 테스트 적합
- 웹상에서 요청과 응답에 대해 테스트
- 시큐리티, 필터까지 자동으로 테스트하며, 수동으로 추가/삭제 가능
- @SpringBootTest 어노테이션보다 가볍게 테스트
- 다음과 같은 내용만 스캔하도록 제한
(@Controller, @ControllerAdvice, @JsonComponent, Converter, GenericConverter, Filter, HandlerInterceptor…)
- BeforeEach
- jacoco : 테스트 코드의 커버리지를 체크하는 라이브러리