Android MVP单元测试 - 我应该模拟事件总线吗?

时间:2015-11-03 12:19:22

标签: android unit-testing events asynchronous mvp

场景:用户在屏幕上执行操作,这会使应用程序异步加载某些数据,然后更新视图。

在我的架构中,它以这种方式完成:

  1. 用户的操作调用了一些演示方法
  2. Presenter呼叫管理器,它启动异步任务
  3. 后台线程中的异步任务调用服务,并将结果发布到事件总线
  4. 当演示者收到有关新数据的通知时(通过事件总线),它会重新加载视图
  5. 我正在考虑在这种情况下进行单元测试的两种方法(让我们假设异步任务在单个测试线程中按顺序执行):

    1. 分离时测试每个类是没有意义的,因为方法通常没有逻辑,只有委托。我们可以定义"单位"在演示者及其依赖关系的级别,达到服务级别(因此,我们应该只模拟服务)。从服务返回的结果应最终传递给演示者,因此我们可以测试完整路径。

    2. 我们使用的事件总线实现取决于Android运行时(绿色机器人),所以要在测试中使用它我们会创建一些智能假,这是非常复杂的。因此,单元测试最好将事件总线模拟为"外部"依赖。因此,对于我们的用例,我们应该分别测试路径展示器 - >事件总线和事件总线 - >主持人。

    3. 哪种方法对我的方案更好?

      第一个似乎更直观:测试正在检查用户操作是否导致正确的视图更改。如果我们可以同步执行操作,那么管理器,异步任务和事件总线将是不必要的 - 它们只是样板,与业务逻辑无关。我错过了一些我会后悔的事吗?

0 个答案:

没有答案