2016-07-04 5 views
3

스프링 부트 + REST 애플리케이션이 있습니다. 단위 테스트를 작성해야 할 때 서비스 빈을 직접 호출하거나 나머지 컨트롤러를 호출해야합니까? 나머지 컨트롤러를 직접 호출하면 RestTemplate을 사용하고 나머지 API를 클라이언트로 호출해야합니다.스프링 부트 REST 애플리케이션 테스트 접근법

은 무엇 최고의 필요한 연습 것입니까? 나는 서비스 콩을 호출하면 컨트롤러 방법 코드가 포함되지되기 때문에

직접 적은 코드 커버리지가 발생합니다. 그게 받아 들일 수 있니?

답변

2

흠에서 언급 RestTemplate을 사용하여,이 복잡한 질문이다 그러나 나는 최선 내가 할 수있는 답변 해 드리겠습니다. 많은 것은 당신/당신의 조직의 위험 허용 도와 테스트에 투자 할 시간에 달려 있습니다. 나는 많은 테스트를 믿는다. 그러나 너무 많은 것 같은 것이있다.

단위 테스트 코드의 유닛을 테스트한다. 좋아,하지만 유닛은 뭐니? 이 기사는 꽤 좋은 토론이다 : http://martinfowler.com/bliki/UnitTest.html하지만 단위는 기본적으로 응용 프로그램의 가장 작은 테스트 가능한 부분이다.

많은 문헌 (예 : https://www.amazon.ca/Continuous-Delivery-Reliable-Deployment-Automation/dp/0321601912/)은 DB 또는 파일 시스템이나 원격 시스템과 같은 매우 낮은 수준의 모의 외부 테스트 및 "API 승인 테스트"(통합 테스트라고도 불림)와 같은 여러 단계의 테스트를 설명합니다. 다른 것을 의미 할 수있는 모호한 용어). 이 후자 유형은 응용 프로그램의 테스트 인스턴스를 시작하고 API를 호출하며 응답에 대해 설명합니다.

단답은 단위 테스트의 경우 단위 (아마도 서비스 나 세분화 된 단위)에 초점을 맞 춥니 다. 그러나 테스트가 클라이언트처럼 작동하고 API를 호출하는 다른 테스트 세트는 가치가 있습니다 너무. 내 제안 : 둘 다 수행하지만 두 단위 테스트를 호출하지 마십시오.

+0

합니다. 따라서 단위 테스트 케이스를 다시 작성해야 할 필요가 없습니다. – Harshana

+0

논쟁의 여지가 있습니다.단위 테스트는 종종 TDD의 일부로 만들어지기 때문에 약간 다른 목적으로 사용됩니다. 그들은 설계를 추진하고 구획화와 단일 책임을 보장하며 개발자가 코드를 작성하는 의도와 개발자가 작성한 유닛을 사용하여 구상 한 방법을 보여줍니다. API 수준 수락 테스트는 수락 기준을 충족 (그리고 기존 기준에서 회귀하지 않음)하는 데 더 도움이됩니다. – Taylor

1

VIA 컨트롤러를 테스트하는 것이 가장 좋습니다. WebServices가 입력되고 여기에 값이 반환됩니다. 그래서 Controller는 이것에있어서 꽤 좋은 역할을하고 있습니다. 작은 논리도있을 수있다, 당신은

당신은 테스트 컨트롤러의 MockMvc 방법을 사용하여 시도 할 수있는 놓칠 수 있습니다.

참조 : Reference-1, Reference-2

아니면 질문 Reference-3

0

당신이 테스트하고자하는 것을 기반으로합니다. 특별히 개발자 팀이있는 경우 테스트를 분리하고 비즈니스 "서비스"를 테스트하기 위해 테스트 케이스를 만들고 REST 템플릿을 사용하는 통합 테스트로 다른 테스트 케이스를 작성하십시오 이 경우 버그를보다 빠르고 쉽게 파악할 수 있습니다.

0

그것은 당신이 수행 할 작업에 따라 달라집니다.

한 가지 방법은 단위 테스트에 서비스와 MVC 컨트롤러와 같은 작업의 단위가 될 것입니다. 이 테스트는이 수업에서 발견되는 최종 논리를 테스트하고 해당하는 경우 높은 분기 커버리지에 도달하려고합니다. 이 외에도 HTTP 요청을 만들고 실제 서비스 빈으로 이동하여 최종 리소스 액세스 만 모의하는 통합 테스트를 작성할 수 있습니다.

통합 테스트를 위해 당신이 Spring의 지원을 사용할 수 있습니다 여기를 참조 : 당신은 너무 단위 테스트를 포함 테스트 통합을 할 경우 내가 생각 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#spring-mvc-test-framework

관련 문제