场景:用户在屏幕上执行操作,这会使应用程序异步加载某些数据,然后更新视图。
在我的架构中,它以这种方式完成:
我正在考虑在这种情况下进行单元测试的两种方法(让我们假设异步任务在单个测试线程中按顺序执行):
分离时测试每个类是没有意义的,因为方法通常没有逻辑,只有委托。我们可以定义"单位"在演示者及其依赖关系的级别,达到服务级别(因此,我们应该只模拟服务)。从服务返回的结果应最终传递给演示者,因此我们可以测试完整路径。
我们使用的事件总线实现取决于Android运行时(绿色机器人),所以要在测试中使用它我们会创建一些智能假,这是非常复杂的。因此,单元测试最好将事件总线模拟为"外部"依赖。因此,对于我们的用例,我们应该分别测试路径展示器 - >事件总线和事件总线 - >主持人。
哪种方法对我的方案更好?
第一个似乎更直观:测试正在检查用户操作是否导致正确的视图更改。如果我们可以同步执行操作,那么管理器,异步任务和事件总线将是不必要的 - 它们只是样板,与业务逻辑无关。我错过了一些我会后悔的事吗?