Android 改装测试、回调?
我正在努力学习如何正确测试我的Android应用程序。现在我通常使用以下结构:Android 改装测试、回调?,android,testing,callback,retrofit,Android,Testing,Callback,Retrofit,我正在努力学习如何正确测试我的Android应用程序。现在我通常使用以下结构: 模型 改造(让它通过回调处理线程) 用于在成功和失败时发布事件的改装调用的包装器 由演讲者挑选 主持人 观点 我曾经在自己处理线程的地方测试过应用程序。在这种情况下,我不知道如何验证我的包装器是否真正调用了事件发布方法,因为这些方法是在回调时调用的。我能做些什么来解决这个问题 我能想到的唯一解决方案是不使用回调,但它们非常方便。仅仅为了测试而自己处理事情,这不是倒退了一步吗 我只能猜测我的架构方式对于测试来说很糟
- 模型
- 改造(让它通过回调处理线程)
- 用于在成功和失败时发布事件的改装调用的包装器 由演讲者挑选
- 主持人
- 观点
但是如何在不模拟改装服务的情况下测试第一部分(因为不应该模拟第三方代码)?尝试使用Rx进行改装。它使同步Rx请求成为异步的,从而避免了回调的需要。更重要的是,您可以从Rx机制获得完美的回调,这将帮助您正确地进行测试
查看改造异步回调可以通过创建带有同步执行器的适配器进行测试 在适配器工厂中,我使用以下方法创建一个改装适配器,用于使用Robolectric和WireMock进行测试。WireMock充当baseURL上的服务器,并通过改造返回RESTAPI上请求的响应
public static RestAdapter synchronousAdapter(Context context, String baseUrl) {
RestAdapter.Builder builder = initiateBuilder(context);
builder.setEndpoint(baseUrl);
Executor synchronous = new SynchronousExecutor();
builder.setExecutors(synchronous, synchronous);
return builder.build();
}
private static final class SynchronousExecutor implements Executor {
@Override public void execute(Runnable r) {
r.run();
}
}
您可能希望通过改装来查看可观察对象,它们也非常方便,而且测试它们要容易得多。但是,在使用RxJava时,继续使用事件总线是否不好?根据您的问题,我推测您正在使用事件总线来发布成功和失败事件。由于Rx已经为您提供了完成、新数据点或错误发生的回调,我建议您使用这些回调,而不是事件总线。这并没有解释如何为改造观测值编写单元测试。