2017-10-13 2 views
0

스프링 부트 가이드에 두 가지 유형의 통합 테스트가 포함 된 이유를 알고있는 사람이 있습니까? (https://github.com/spring-guides/gs-spring-boot#add-unit-tests)스프링 부트에서 다양한 유형의 통합 테스트가있는 이유

하나는 TestRestTemplate이고 다른 하나는 MockMvc 종속성이 있습니까? 각 테스트 유형에서 스프링 부트는 테스트 환경을 부트 스트랩합니다. 그렇다면이 분리의 이유는 무엇입니까?

답변

1

MockMvc을 사용하면 HTTP 요청주기가 조롱 된 응용 프로그램의 인스턴스를 테스트하고있는 것입니다. 따라서 테스트 범위는 애플리케이션의 MVC 측면에 불과합니다. 나는 이것이 전형적으로 "통합 테스트"라고 분류되지는 않을 것이라고 생각하지만 대신 단위 테스트에 가깝다 (비록 그 범위가 단일 클래스보다 상당히 크다).

사용

TestRestTemplate 당신은 당신이 전체 응용 프로그램 컨텍스트를 '생겨나'하는 즉 응용 프로그램의 실제 인스턴스를 테스트하고 외부 배우로 호출된다. 이것은 일반적으로 "통합 테스트"라고하며 실제 사용에 가장 가까운 테스트 일 수 있습니다. 는 '전체 스택'통합 테스트가 MockMVC 시험에 의해 제공되는 범위의 상위 집합을 제공 할 수 TestRestTemplate를 통해 호출하기 때문에 당신이 MockMVC 테스트 귀찮게 왜

지금, 당신은 궁금 할 것이다. 그렇다면이 질문에 대한 질문이라고 생각합니다.

  • 테스트 범위; MockMVC 테스트 사례는 전체 통합 테스트보다 일반적으로 (애플리케이션 컨텍스트가 적기 때문에) 신속하고 쉽게 시작됩니다. 또한 응용 프로그램 컨텍스트를 덜 사용하기 때문에 테스트에서 제대로 작동하지 않는 실제 응용 프로그램 컨텍스트의 모든 측면을 조롱하기가 힘들지 않을 수도 있습니다.

  • 쉬운 사용법; MockMVC은 HTTP 상태를 주장하고, JSON 응답 등에 대해 질문하고 주장하는 정적 도우미와 함께 제공됩니다. 물론 YMMMV이지만 많은 사람들이 쉽게 개발할 수 있고 읽을 수있는 테스트 사례를 전달하는 데 도움이됩니다. 모든 호출에 대한 모든 매핑, 행복하고 슬픈 경로를 포함한 전체 컨트롤러 레이어의 자세한 테스트

    • MockMVC 시험 : 실제로

    , 당신은 아마도 두 가지 접근 방식의 조합을 사용하는 것이 좋습니다 HTTP 상태 코드, 내용 본문 등에 대한 깊은 단언

  • TestRestTemplate 사용자 관점에서 표현 된 주요 흐름에 대한 테스트 사용자가/볼에 관심이있는 비트에 국한 주장과 Save a new Foo, Search for all Foos, Submit an invalid Foo update 등.
+0

는 자세한 설명을 주셔서 감사합니다! 내가 확인할 수없는 유일한 사실은 MockMVC 테스트가 더 빠릅니다. 그것은 정확히 같은 시간이 걸립니다 (내 컴퓨터에서) – DimarZio

관련 문제