@WebMvcTest
- Controller와 관련 Bean만 로드
-> Service & Repository Bean 로드 x - 필요한 컨트롤러 및 관련 컴포넌트만 초기화.
-> 빠른 테스트 가능 - MockBean, MockMvc를 사용해서 Test
- 사용 예시
- 웹 계층(Controller)만 테스트할 때 사용
@SpringBootTest
- 전체 Application Context 로드
-> 모든 Bean 로드
-> 테스트가 실제 애플리케이션과 유사하게 구성 - 모든 계층을 로드 및 초기화
-> 다소 느린 테스트 - MockBean, MockMvc이 아닌 실제 Service, Repository로 Test 가능
-> 주로 RestTemplate, TestRestTemplate - 사용 예시
- 애플리케이션 통합테스트
- 여러 계층이 연동되는 로직테스트
- 실제 환경에서 동작 확인
나의 사용방식
나는 controller만 사용해봄 -> @WebMvcTest만 진행해봄
@Test
@DisplayName("어떤 테스트인 지 입력")
void testMethod() throws Exception {
//given
use or return하는 값을 생성
//when
여기서 when 메소드로 해당 url에 어떤식으로 동작하는 지 가정
//then
해당 mockMvc.perform 메소드로 url 동작 + result로 해당 값이 예상대로 return 되는 지 확인
}