运行 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 实际上用于单元测试
测试时(在 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 实际上用于单元测试