1

REST API가있는 스프링 부트 응용 프로그램이 있습니다. 그 뒤에는 판매 된 SDK를 사용하여 공급 업체 서비스에 전화합니다. 내 애플리케이션에서 부하 테스트를 실행해야하지만, 벤더 API를 호출하고 테스트 중에 실수로 시스템을 중단하고 싶지는 않습니다.API 스터 빙로드 테스트에 Mockito 사용

일반 응용 프로그램 런타임 중에 Mackito를 JUnit 테스트 외부에서 사용하여 벤더 SDK 객체의 모의 객체를 만들 수 있습니까?

프로필을 기반으로 구성된 구성 빔을 사용하여 프로필이 "성능 테스트"일 때 조롱 된 개체를 사용할 수 있다고 생각했습니다. 그러나 나는이 방법으로 Mockito를 사용하는 사람에 대한 기사/토론/언급을 찾을 수 없으며, 내 접근법을 두 번째로 추측합니다. 생각?

+0

의 사용 가능한 복제 [봄과 단위 테스트에서 원격 REST API를 조롱하는 방법?] (https://stackoverflow.com/questions/25564533/how-to-mock- remote-rest-api-in-unit-test-with-spring) – tkruse

답변

0

당신은 아마 여기에 같은 공급 업체의 서비스를 조롱 wiremock 또는 유사한 소프트웨어를 사용하여 찾아야한다 : Integration Testing with a fake server

Wiremock이 편리 JUnit 테스트 내에서 시작/정지 할 수있는 스텁 서버입니다. 응답을 설정할 때 원격 서버처럼 작동합니다. documentation이 정말 좋습니다. 복사하고 싶지 않습니다. & 여기에 모두 붙여 넣으십시오.

그냥 샘플 :

public class MyTest { 
    @Rule 
    public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().dynamicPort().dynamicHttpsPort()); 

    @Test 
    public void exampleTest() { 
     stubFor(get(urlEqualTo("/my/resource")) 
       .willReturn(aResponse() 
        .withStatus(200) 
        .withBody("<response>Some content</response>"))); 

     ...   
     verify(postRequestedFor(urlMatching("/my/resource/[a-z0-9]+")) 
       .withRequestBody(matching(".*<message>1234</message>.*"))); 
    } 
} 

loadtest를 들어, 오히려 어딘가에 스텁 standalone을 실행하고 일부 스크립트는 응답을 설정 할 것이다.

응용 프로그램에 스텁 응답이 포함 된 모의 객체를 포함시키는 것이 좋지 않기 때문에로드 테스트에 대한 실제 결과를 얻는 데 도움이되지 않기 때문에 Mockito에 대한 언급이 없을 것입니다 (응답 속도가 훨씬 빠르며 직렬화를 통과하지 않기 때문입니다)./deserialization). 그렇지

도 이쪽을 봐 : How to mock remote REST API in unit test with Spring?

+0

응답을 감사하십시오. Mockito 자체가 내 앱 성능을 가질 수있는 영향을 고려하지 않았습니다. 따라서 여기에있는 아이디어는 내 앱과 실제 공급 업체 API 사이에서 작동하는 별도의 와이어 록 서버를 호스팅하는 것입니다. 스텁을 선택적으로 기록 할 수 있으며로드 테스트 시나리오에서는 조롱 한 응답 만 반환합니다. 진정으로 그들을 분리하려면, wiremock 서버는 외부 프로세스로 실행해야합니까? 내가 제대로 이해한다면. – user1625624

+0

아니 통과, 그냥 스텁. 테스트 또는 독립 실행 형에서 실행하기 쉽습니다. – tkruse