运行 Roboletric 测试时,Retrofit 不会回调

Retrofit does not callback when running Roboletric tests

测试时(在 JVM 下)不从 Retrofit 获得回调。

使用 Robolectric (3.0)、Wiremock (1.57:standalone) 和 Mockito (1.10.19) 测试应用程序。

该应用程序使用 Retrofit (1.9) 连接后端 API。应用程序有通过 Retrofit 调用 API 的服务,并且活动绑定到服务。

调试和测试日志 运行 显示 activity 调用服务,服务调用改造,改造 returns 来自 Wiremock(如预期)。

I/com.levld.client.rest.RestAdapterFactory: <--- END HTTP (6208-byte body) W/com.levld.client.rest.RetrofitErrorHandler: 内部服务器错误

内部服务器错误是故意触发 Retrofit 错误处理程序(由 Wiremock 设置的状态代码)。

调试错误处理程序时,当 Retrofit 尝试回调服务时处理停止。调试器中的变量显示回调已设置为调用服务。

非常感谢您的帮助和建议!

通过为 Retrofit 设置同步执行器解决。这会触发 api 调用的同步执行,但仍然 returns 结果作为对调用服务的回调。 services层异步功能代码不变!

同步执行器代码:.

p.s。 Robolectric 实际上用于单元测试