首页 > 解决方案 > Mockwebserver 和 OkHttpIdlingResrouce 连接异常

问题描述

我正在使用 Square 的 MockWebServer 编写仪器测试来模拟服务器响应,并使用 OkHttpIdlingResource 来等待 OkHttp 完成工作,直到剩余的测试步骤继续。我还使用了 MockWebServer 调度程序,以便我可以根据路径以不同方式响应某些请求。

我遇到了一个问题,即测试适用于某些 Android API 版本,而它们不适用于其他版本。

在 Marshmallow 上,测试按预期通过。当我在 Android Pie 上运行时,MockWebServer 会响应几个请求,但随后,出于某种原因,OkHttp 抛出了 java.net.ConnectException。

如果我点击我的真实网络服务器,任何应用程序版本都可以正常工作,只有在使用 MockWebServer 时我才会看到这个问题。

我不知道是什么导致了这种情况,并且日志没有显示任何有用的信息。在失败的情况下,我可以看到 MockWebServer 有几个成功的 200 响应,但由于某种原因,在其中一个调用期间发生了 ConnectException。

我可以在日志中看到的唯一奇怪的事情是,在记录最后一个失败的 OkHttp 请求之前记录了 Espresso ViewAssertion。所以可能是 OkHttpIdlingResource 说它是空闲的,而实际上它不是。

关于什么可能是错误的任何想法?

标签: androidandroid-espressookhttpmockwebserver

解决方案


推荐阅读