使用不同的测试运行器进行不同的测试

时间:2016-06-30 09:42:41

标签: android unit-testing dagger-2

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

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

我通过指定使用TestAppComponent的{​​{1}}来执行此操作。在TestAppModule扩展TestApplication的{​​{1}}中,我提供的是AndroidApplication而不是真实的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);
}

我的问题

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

1 个答案:

答案 0 :(得分:0)

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

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