use*_*882 5 java android unit-testing retrofit2
尝试使用单元测试Retrofit 2.0响应MockWebServer.我有网络服务器设置,但问题发生在我试图传递模拟json文件作为响应.为了说明,我的文件夹结构是:
src->test->java->package_name->class_name.java
src->test->resources->list_success.json
Run Code Online (Sandbox Code Playgroud)
我的单元测试:
@Before
public void setUp() throws Exception{
MockitoAnnotations.initMocks(this);
server = new MockWebServer();
serviceHelper = new ServiceHelper();
}
@Test
public void testEventBusIdPostedOnSuccessfulServiceCall() throws Exception {
server.start();
server.enqueue(new MockResponse().setResponseCode(200).setBody(getStringFromFile(RuntimeEnvironment.application, "list_success.json")));
MainActivity.URL = server.url("/").toString();
serviceHelper.getIndividualData("Store","7");
verify(eventBus).post(any());
}
@After
public void tearDown() throws Exception{
server.shutdown();
}
Run Code Online (Sandbox Code Playgroud)
一切正常.使用模拟JSON触发async的改装调用.但是,回调永远不会被触发.我尝试在实际的服务实现中放入一个倒计时锁存器,但也没有任何反应.
public void getIndividualData(String item, String number) {
Call<DataList> dataList = RestClient.get().getList(item, number);
dataList.enqueue(new Callback<DataList>() {
@Override
public void onResponse(Response<DataList> response, Retrofit retrofit) {
/*data persistence should take place before sending out the eventbus message.
Passing the response object directly for sample purpose. */
EventBus.getDefault().post(new IndividualItemEvent(response.body().Values));
// latch.countDown(); ---->might be needed for retrofit async unit testing
}
@Override
public void onFailure(Throwable t) {
Log.d("%%%%%", "retrofit failure");
// latch.countDown(); ---->might be needed for retrofit async unit testing
}
});
// try {
// latch.await();
// } catch (InterruptedException e) { ---->might be needed for retrofit async unit testing
// e.printStackTrace();
// }
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?谢谢.
| 归档时间: |
|
| 查看次数: |
3105 次 |
| 最近记录: |