【问题标题】:Using Different Test Runners For Different Tests为不同的测试使用不同的测试运行器
【发布时间】:2016-06-30 09:42:41
【问题描述】:

我正在使用Dagger 2 并尝试在测试时提供不同的依赖项。

我可以为测试提供不同的依赖项,但不幸的是,这些依赖项随后会应用于androidTest 目录中的所有测试。

我通过指定使用TestAppModuleTestAppComponent 来做到这一点。在扩展我的AndroidApplicationTestApplication 中,我提供TestAppComponent 而不是真正的AppComponent。然后我有TestRunner,它扩展了newApplication 方法,如下所示:

@Override
public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
    return super.newApplication(cl, TestApplication.class.getName(), context);
}

然后为了使用这个跑步者,我将当前跑步者替换为以下内容:

testInstrumentationRunner "com.company.myapp.TestRunner"

我的问题

如何为不同的测试使用不同的组件/应用程序/测试运行器,而不是为每个测试使用相同的?我可能想在一个测试中模拟一个依赖项,而不是在另一个测试中?

【问题讨论】:

    标签: android unit-testing dagger-2


    【解决方案1】:

    我在一篇博文中找到了解决方案。它绕过创建自定义运行器,而是使用Rule 在加载的Application 中设置不同的组件。这意味着您可以为每个测试类提供不同的组件,这正是我想要做的。

    Ribot Labs 人员的博文可以在here找到

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多