1
我正在測試我的服務類,它在Internet上獲取一些IP。我寫過這樣的測試:Android測試用例等待回調
TestTryoutTestService webServices = new TestTryoutTestService(ENDPOINTESTURL);
TestService adapter = webServices.getWebservice();
adapter.getIpAsync(mCallback);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
assertEquals("IP is not equal", result, "1");
}
Callback<TestResponse> mCallback = new Callback<TestResponse>() {
@Override
public void success(TestResponse testResponse, Response response) {
result = testResponse.getIp();
}
@Override
public void failure(RetrofitError error) {
fail();
}
};
問題是我的Thread.sleep很短,我認爲它很醜。所以我的問題是如何在測試用例中等待回調結果?
編輯:
測試運行與robolectric。即使線程睡了10000,它的nenets也會進入回調。 http通過線框存根,如果沒有完成異步,它就可以工作。
stubFor(get(urlMatching("/ip/.*"))
.atPriority(5)
.willReturn(aResponse()
.withStatus(200)
.withBodyFile("ip_response.json")
));
發現問題。我還需要設置執行器在我的Retro restadapter中,如下所示:.setExecutors(AsyncTask.THREAD_POOL_EXECUTOR,AsyncTask.THREAD_POOL_EXECUTOR) – user1007522 2014-12-08 08:07:08