Spring Boot 테스트종류
단위(unit) 테스트
하나의 기능 혹은 메서드 기준으로 독립적으로 진행
1개의 테스트는 1개의 기능에 대해서만 테스트
테스트 주체와 협력자를 구분하기.
( 주체는 테스트를 할 객체이며, 협력자는 테스트를 진행하기 위해 정의하는 가짜 객체 )
Given( 테스트 위한 준비 ), when( 테스트 진행 ), then( 테스트 결과 검증 )으로 명확하게 작성하기
@으로 분류
1. 통합 테스트 - @SpringBootTest
모든 빈을 등록하여 테스트를 진행한다. 그렇기 때문에 애플리케이션 규모가 크면 테스트가 많이 느려진다.
2. 컨트롤러 테스트 - @WebMvcTest
웹상에서 요청과 응답에 대한 테스트를 할 수 있다.
3. JPA 관련 테스트 - @DataJpaTest
JPA 관련된 설정만 로드한다. 그렇기 때문에 @Entity 클래스를 스캔하여 스프링 데이터 JPA 저장소를 구성한다.
기본적으로 인메모리 데이터베이스를 이용함.
@AutoConfigureTestDataBase : 데이터 소스를 어떤 걸로 사용할지에 대한 설정
- Replace.Any : 기본적으로 내장된 데이터소스를 사용
- Replace.NONE : @ActiveProfiles 기준으로 프로파일이 설정됨
데이터소스의 설정이 정상적인지, JPA를 사용하서 데이터를 제대로 생성, 수정, 삭제하는지 등의 테스트가 가능함.
테스트가 끝날 때마다 자동으로 테스트에 사용한 데이터를 롤백
4. REST 관련 테스트 - @RestClientTest
Rest 통신의 JSON 형식이 예상대로 응답을 반환하는지 등을 테스트 함
5. Json의 직렬화, 역직렬화 테스트 - @JsonTest
Gson, Jackson의 테스트를 제공함.
https://happyer16.tistory.com/entry/Spring-Boot-Test-%EC%A2%85%ED%95%A9-%EC%A0%95%EB%A6%AC
Spring Boot Test 종합 정리 ( 테스트종류, JUnit5 )
개요 테스트코드의 중요성은 해당 블로그를 읽는 분이라면 모두 알고 있을 것이다. 나도 잘 알고 있지만, 정확한 사용법을 몰라 매번 @SpringBootTest 통합테스트로만 테스트코드를 작성하였다. 이
happyer16.tistory.com