본문 바로가기

카테고리 없음

Test ) @SpringBootTest와 @WebMvcTest의 대한 궁금증 & 나의 사용방식

@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 되는 지 확인
        
    }