我有一个包含多个模块的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
答案 0 :(得分:0)
我找到的最佳解决方案是仅为测试创建第三个模块,将基本测试类和测试依赖项放在那里。 并在模块A和模块B(以及所有其他模块 - 在所有单元测试依赖项中只使用一个模块)中使用它。
testImplementation project(':features:basetests')
缺点 - 可以在非测试工件中导入它(例如,实现项目(':features:basetests'))。良好的代码审查可以防止这些错误。 看起来没有方便的方法来定义基本共享测试代码。