gpt4 book ai didi

安卓测试 : Dagger2 + Gradle

转载 作者:行者123 更新时间:2023-12-03 06:09:35 24 4
gpt4 key购买 nike

这个answer在为我指明正确的方向方面非常有帮助。

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

拜托,有人可以更好地解释我吗:

  • 选项 1:通过子类化模块覆盖绑定(bind)

  • 这意味着我实际上必须更改生产代码才能注入(inject)模拟依赖项?

    例子:
    @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:单独的组件配置

  • 这是否意味着我将拥有 2 个 Gradle productFlavors,
    - 一个包含生产模块和组件,
    - 一个包含模拟。

    正确的?

    谢谢你的帮助!

    最佳答案

    依赖注入(inject)的强大功能非常方便,尤其是对于测试而言,因为您可以轻松地将测试环境中的依赖切换为虚拟依赖。

    它的构建方式如下:

  • 生产代码中的依赖项应该注入(inject)而不是硬编码。
  • 在您的测试环境中,您应该构建等效的测试模块和测试组件,以替换您在实际代码中的任何依赖项。

  • 如果你想要一个合适的例子,我真的建议你检查这个 boilerplate因为它完全基于使用 Dagger2 的 DI。

    样板当前处理的依赖项如下:
  • 数据库依赖:封装了所有的数据库操作。
  • 共享偏好依赖:处理共享偏好。
  • 本地文件依赖:处理保存文件。
  • 分析依赖:涵盖向分析后端(GA、Segment、FB、Flurry ..)报告事件的所有操作
  • 日志依赖:封装所有与日志相关的操作到你的控制台
  • API依赖:封装了所有API相关操作
  • 关于安卓测试 : Dagger2 + Gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35955867/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com