【发布时间】:2015-04-02 20:35:30
【问题描述】:
我有一个提供 Dagger 模块的 Modules 类。在运行我的单元测试和 androidTests 时,我想覆盖这个类,类似于你可以覆盖不同构建类型或风格的类。
这可能吗?目前,当我尝试在我的test sourceSet 中创建一个与main sourceSet 中的相应类具有相同限定名称的类时,我遇到了Duplicate class file found 错误。
最后,我想在单元测试期间提供稍微不同的数据库。
【问题讨论】:
-
这就是依赖注入的作用;)
-
@OliverCharlesworth 是的 - 这就是我使用它的原因。
-
好的,那么唯一的问题是您的测试课程与您的真实课程具有相同(合格)的名称吗?通过将其命名为
TestDatabase(或其他名称),这肯定是可以轻松绕过的吗? -
@OliverCharlesworth 如果它没有相同的限定名称,那么我的
mainsourceSet 中的所有代码将如何知道使用它。或者更确切地说,我怎样才能告诉我的mainsourceSet 中的代码使用TestDataModule而不是DataModule?我想在我的所有测试中使用相同的 objectGraph。如果我必须重新创建 objectGraph - 这是一个问题,因为我的数据需要多长时间才能初始化。 -
但是那不就是DI的意义吗?我没有使用 Dagger,所以我无法评论如何利用它,但基本概念是在测试期间,您提供一个
TestDataModule实例而不是DataModule实例。或者,您提供一个构造相关实例的工厂。
标签: java android unit-testing gradle dagger