단위 테스트

사용 기능들

01. @WebMvcTest

  • Web에 집중할 수 있는 어노테이션
  • @Controller, @ControllerAdvice 등을 사용 가능

02. MockMvc

  • 웹 API를 테스트할 때 사용
  • Spring MVC 테스트의 시작점
  • HTTP GET, POST 등에 대한 API 테스트 가능

03. MockMvc.peform 메소드

  • MockMvc를 통해 HTTP 메소드 활용 가능

  • 체이닝이 지원(andExpect 활용)되어 여러 검증을 이어서 수행할 수 있음

  • HTTP 메소드 참고

  • 예제)

  • @Test
    void helloDTO() throws Exception {
        String name = "hello";
        int amount = 1000;
      
        mvc.perform(
            get("/hello/dto")
            .param("name",  name)
            .param("amount", String.valueOf(amount)))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$.name", is(name)))
            .andExpect(jsonPath("$.amount", is(amount)));
    }
    
  • .param

    • API 테스트할 때 사용될 요청 파라미터 설정
    • String값만 허용하므로 등록할 때 String.valueOf(value)로 변경해야 함
  • jsonPath

    • JSON 응답값을 필드별로 검증할 수 있는 메소드
    • $를 기준으로 필드명 명시 ($.필드명)
    • 뒤의 검증 메소드는 org.hamcrest.Matchers에서 불러옴

JPA와 함께 테스트 하는 경우

@SpringBootTest + TestRestTemplate

  • 이 조합으로 @WebMvcTest의 기능을 대신하면서 JPA도 테스트할 수 있음

  • @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    
  • 위 코드를 테스트 클래스에 붙임 => 랜덤으로 포트 생성

이동욱 님의 스프링 부트와 AWS로 혼자 구현하는 웹서비스를 정리한 내용입니다.

이동욱님의 교재

댓글남기기