使用Android Studio 3.0 / android_gradle_version ='3.0.1'/ gradle-4.5
假设我有两个安卓模块
module-base
module-a
当我想从module-a中的module-base访问源代码时,我只需要在我的代码中写这个 模块a.gradle
dependencies {
implementation project(path: ':module-base')
}
但是,如果我想在模块-a 的测试中从模块库访问测试源呢? 此处不起作用,如上所述
dependencies {
testImplementation project(path: ':module-base')
}
我发现了许多建议(几年前),其中有类似
的内容 compileTestJava.dependsOn tasks.getByPath(':module-base:testClasses')
testCompile files(project(':module-base').sourceSets.test.output.classesDir)
或
testCompile project(':module-base).sourceSets.test.classes
但没有人提到过。从编译器的角度来看总是有问题: - /
有人可以帮助我如何在两个模块之间创建Android测试代码依赖关系吗?
答案 0 :(得分:1)
实际上我找到了解决方法。不要使用来自模块库的测试源,而是使用测试相关模块 module-testutils 中的来源,这些来源定义如下
dependencies{
testImplementation project(':module-testutils')
}
因此,您可以共享将被排除在不可测试的apk之外的常见测试代码。
答案 1 :(得分:1)
万一其他人在这里结束,实现此目的的一种方法是将目标模块定义为源集。让我们假设 test-mdoule 是我们想要从中导入东西的模块,我们可以这样做:
android {
sourceSets {
// non-instrumental test example
test {
java.srcDir project(":test-module").file("src/test/java")
}
// instrumental test example
androidTest {
java.srcDir project(":test-module").file("src/androidTest/java")
}
}
}
参考:https://jonnycaley.medium.com/sharing-test-code-in-a-multi-module-android-project-7ce4de788016