MockWebserver和Retrofit 2.0

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)

我错过了什么吗?谢谢.