我正在使用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);
}
我的问题
如何针对不同的测试使用不同的组件/应用程序/测试运行器,而不是对每个测试使用相同的测试?我可能想在一个测试中模拟一个依赖项而不是另一个测试中的依赖项?
答案 0 :(得分:0)
我在博文中找到了解决方法。它绕过创建自定义运行器,而是使用Rule
在加载的Application
中设置不同的组件。这意味着您可以为每个测试类提供不同的组件,这是我想要做的。
可以找到Ribot Labs的人员的博客文章here