模块化Android测试 - 使用基本模块测试的模块测试

时间:2018-03-28 08:57:08

标签: android android-studio gradle android-gradle build.gradle

我有一个包含多个模块的android项目,模块B依赖于模块A

dependencies {
    implementation project(':features:A')
}

我希望模块B中的单元测试从模块A扩展基本测试.IDE成功解决了所有依赖项,但在构建时,只有模块A的生产代码可以在测试中访问。

我试图为测试特别添加依赖项:

dependencies {
    testCompile project(':features:A').sourceSets.test.output
}

这会导致错误:

Could not get unknown property 'test' for SourceSet container of type org.gradle.api.internal.tasks.DefaultSourceSetContainer.

如果我尝试使用测试创建自定义工件,则相同。

如何从依赖模块访问基本模块中的特定于测试的代码?

AS 3.1,gradle 4.1

1 个答案:

答案 0 :(得分:0)

我找到的最佳解决方案是仅为测试创建第三个模块,将基本测试类和测试依赖项放在那里。 并在模块A和模块B(以及所有其他模块 - 在所有单元测试依赖项中只使用一个模块)中使用它。

testImplementation project(':features:basetests')

缺点 - 可以在非测试工件中导入它(例如,实现项目(':features:basetests'))。良好的代码审查可以防止这些错误。 看起来没有方便的方法来定义基本共享测试代码。