2017-12-05 10 views
1

私はREST APIを持つSpring Bootアプリケーションを持っています。ビルトインされたSDKを使用して、ベンダーのサービスに電話をかけます。アプリケーションで負荷テストを実行する必要がありますが、ベンダーAPIを呼び出してテスト中に誤ってシステムをクラッシュさせたくありません。APIスタッフィング負荷テストにMockitoを使用する

JUnitテストの外部でMockitoを使用して、通常のアプリケーション実行時にベンダー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>.*"))); 
    } 
} 

負荷テストのために、あなたはむしろどこかスタブstandaloneを実行し、いくつかのスクリプトが応答を設定する必要があります。

あなたのアプリケーションにスタブ応答を含むモックを埋め込むことは悪い考えであり、応答がより速くシリアル化を通らないため、負荷テストの現実的な結果を得るのに役立たないので、おそらくMockitoの言及が見つかりません/デシリアライズ)。エルス

もここを見て: How to mock remote REST API in unit test with Spring?

+0

応答を気に入ってください。 Mockito自体が自分のアプリのパフォーマンスを引き出す可能性は考慮しなかった。したがって、ここでのアイデアは、アプリと実際のベンダーAPIの間で動作する別個のワイヤモックサーバーをホストすることであり、オプションでスタブを記録することができ、負荷テストシナリオでは模擬応答のみが返されます。それらを本当に分離するには、ワイヤモックサーバーを外部プロセスとして実行する必要がありますか?私が正しく理解すれば。 – user1625624

+0

は通過しない、スタブだけではありません。テストやスタンドアロンから簡単に実行できます。 – tkruse

関連する問題