[리팩토링]Junit5 에서의 컨트롤러 테스트시 어노테이션 종류 등

@WebMvcTest 어노테이션

  • 스프링 부트에서 제공하는 어노테이션
  • 컨트롤러 테스트에 필요한 구성만 로드하여 빠른 테스트가 가능하도록 한다.
  • 테스트 대상 컨트롤러 클래스를 지정가능
@WebMvcTest(YourController.class)
public class YourControllerTest {
    // ...
}

MockMvc

  • 스프링 MVC 테스트 지원 핵심 클래스
  • 컨트롤러 메서드 호출하고 HTTP 요청/ 응답을 검증가능
  • @Autowired 를 통해 MockMvc 인스턴스 주입
@Autowired
private MockMvc mockMvc;
  • 예시
// when + then
            mockMvc
                .perform(MockMvcRequestBuilders
                    .get(BASE_URL + "/{userId}/carts", anyString())
                    .contentType("application/json"))
                .andExpect(MockMvcResultMatchers
                    .status()
                    .isOk())
  • 특정 엔드포인트로 컨트롤러 테스팅 가능
  • 예상한 응답이 돌아오는지도 테스트 가능하다.
  • 테스트가 다른 레이어에 의존하지 않도록 독립적인 테스팅을 지원한다.

@MockBean

  • Mockito 라이브러리의 일종
  • 스프링 컨텍스트 모의 객체를 등록하는 기능
  • 서비스 레이어 혹은 매퍼, 리포지토리 레이어의 동작 스텁 가능
@MockBean
private CartService cartService;


Uploaded by N2T