Android测试:Dagger2+;格拉德尔

Android测试:Dagger2+;格拉德尔,android,gradle,integration-testing,dagger-2,Android,Gradle,Integration Testing,Dagger 2,这非常有助于为我指明正确的方向 然而,事情对我来说并不完全清楚 请有人能给我解释一下吗: 选项1:通过子类化模块覆盖绑定 这意味着我实际上必须更改生产代码,以便注入模拟依赖项 例如: @Test public void testFoo(){ MyClass class=new MyClass(); assertTrue(class.doStuff()); } public class MyClass(){ @Inject private Dependency dependency; pu

这非常有助于为我指明正确的方向

然而,事情对我来说并不完全清楚

请有人能给我解释一下吗:

  • 选项1:通过子类化模块覆盖绑定
这意味着我实际上必须更改生产代码,以便注入模拟依赖项

例如:

@Test
public void testFoo(){
MyClass class=new MyClass();
assertTrue(class.doStuff());
}

public class MyClass(){
@Inject
private Dependency dependency;

public MyClass(){}   
MyDaggerComponent.builder().foo(new MockDependency).build.inject(MyClass.this);
}
这意味着我需要更改MyClass以通过模拟模块

对吗

  • 选项2:单独的组件配置
那是不是意味着我会有两种口味, -一个包含生产模块和组件, -包含模拟的一个

对吗



谢谢你的帮助

依赖项注入的功能非常方便,尤其是在测试中,因为您可以轻松地将测试环境中的依赖项切换到虚拟依赖项

其建造方式如下所示:

  • 生产代码中的依赖项应该是注入的,而不是硬编码的
  • 在您的测试环境中,您应该构建等效的测试模块和测试组件,这些模块和组件将替换实际代码中的任何依赖项
如果你想要一个合适的例子,我真的建议你检查一下,因为它完全基于使用Dagger2的DI

锅炉板当前处理的相关性如下:

  • 数据库依赖项:封装所有数据库操作
  • 共享首选项依赖项:处理共享首选项
  • 本地文件依赖项:用于保存文件
  • 分析相关性:涵盖向分析后端报告事件的所有操作(GA、Segment、FB、Flurry..)
  • 日志依赖项:封装与登录到控制台相关的所有操作
  • Api依赖项:封装所有与Api相关的操作

您是否查看了当前正在进行的悬赏?这似乎与你的问题非常相似:@DavidMedenjak谢谢你指出+1.