android – MockWebServer和带回调的Retrofit

我想模拟MockWebServer的网络通信.不幸的改造回调永远不会被调用.我的代码
MockWebServer server = new MockWebServer();
    server.enqueue(new MockResponse().setResponseCode(200).setBody("{}"));
    server.play();

    RestAdapter restAdapter = new RestAdapter.Builder().setConverter(new MyGsonConverter(new Gson()))
            .setEndpoint(server.getUrl("/").toString()).build();

    restAdapter.create(SearchService.class).getCount(StringUtils.EMPTY,new Callback<CountContainer>() {

                @Override
                public void success(CountContainer countContainer,Response response) {
                    System.out.println("success");
                }

                @Override
                public void failure(RetrofitError error) {
                    System.out.println("error");
                }
            });

    server.shutdown();

当我在没有回调的情况下使用改装时,它可以工作.

解决方法

通过使用Callback,您可以告诉Retrofit调用请求并异步调用回调.这意味着您的测试在任何事情发生之前就会退出.

有两种方法可以使其工作:

>在测试结束时使用锁并等待,直到调用其中一个回调方法.>将同步Executor的实例(只是立即调用.run()的实例)传递给RestAdapter.Builder上的setExecutors,以便后台调用和回调调用同步发生.

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...