Android JUnit テストでMockWebServerライブラリを使用しています。サーバーを呼び出す SDK をテストしています。そのMockWebServer
ため、これらのサーバー URL をオーバーライドし、SDK が送信するものをキャプチャしてアサーションを作成するために使用しています。
私が直面している問題は、それを実行しserver.takeRequest()
て新しいRecordedRequest
変数に割り当てようとすると、テストが2番目にハングアップし、server.takeRequest()
場合によっては最初の変数でもハングアップすることです-エミュレーターで実行するとハングアップします最初の方法ですが、物理的な Android デバイスで実行すると、2 番目の方法server.takeRequest()
でフリーズします。server.takeRequest()
public void testSomething() {
final MockWebServer server = new MockWebServer();
try {
server.play();
server.enqueue(new MockResponse().setBody("")
.setResponseCode(HttpURLConnection.HTTP_INTERNAL_ERROR));
server.enqueue(new MockResponse().setBody("")
.setResponseCode(HttpURLConnection.HTTP_OK));
server.enqueue(new MockResponse().setBody("")
.setResponseCode(HttpURLConnection.HTTP_OK));
URL url = server.getUrl("/");
// This internal method overrides some of the hardcoded URLs
// within the SDK that I'm testing.
Util.overrideUrls(url.toString())
// Do some server calls via the SDK utilizing the mock server url.
RecordedRequest requestFor500 = server.takeRequest();
// Do some assertions with 'requestFor500'
// Do some more server calls via the SDK utilizing the mock server url.
/*
* This is the part where the JUnit test hangs or seems to go into
* an infinite loop and never recovers
*/
RecordedRequest requestAfter500Before200 = server.takeRequest();
} catch {
...
}
}
私は何か間違ったことをしていますか、それともこれはある種のバグMockWebServer
ですか?