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