kot*_*oMJ 13 unit-testing android-studio build.gradle android-gradle-plugin gradle-plugin
使用Android Studio 3.0/android_gradle_version ='3.0.1'/ gradle-4.5
假设我有两个android模块
module-base
module-a
Run Code Online (Sandbox Code Playgroud)
当我想从module-a中的module-base访问源代码时,我只需要在我的module-a.gradle中编写它
dependencies {
implementation project(path: ':module-base')
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我想在模块-a的测试中从模块库访问测试源呢? 这里没有像上面那样工作的方法
dependencies {
testImplementation project(path: ':module-base')
}
Run Code Online (Sandbox Code Playgroud)
我找到了很多建议(几年前)
compileTestJava.dependsOn tasks.getByPath(':module-base:testClasses')
testCompile files(project(':module-base').sourceSets.test.output.classesDir)
Run Code Online (Sandbox Code Playgroud)
要么
testCompile project(':module-base).sourceSets.test.classes
但没有人提到过.从编译器的角度来看总是有问题: - /
你能帮助我如何在两个模块之间创建Android测试代码依赖吗?
wil*_*xyz 11
如果其他人最终到达这里,实现此目的的一种方法是将目标模块定义为源集。假设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")
}
}
}
Run Code Online (Sandbox Code Playgroud)
参考: https: //jonnycaley.medium.com/sharing-test-code-in-a-multi-module-android-project-7ce4de788016
实际上,我找到了解决方法。不要使用来自module-base 的测试源,而是使用来自测试相关模块module-testutils 的源,其定义如下
dependencies{
testImplementation project(':module-testutils')
}
Run Code Online (Sandbox Code Playgroud)
因此,您可以共享通用测试代码,这些代码将被排除在不可测试的 apk 之外。
| 归档时间: |
|
| 查看次数: |
1725 次 |
| 最近记录: |