我正在尝试从 Android gradle 插件 2.3.3 迁移到 3.0。我设置了 2 个项目,其中 ProjectB 中的测试使用src/test/java
ProjectA 中存在的测试类。我在使用 android gradle 插件 2.3.3 时使用以下设置来实现这一点 -
项目A build.gradle
-
task myTestsJar(type: Jar, dependsOn: testClasses) {
from sourceSets.test.output
}
configurations {
testArtifacts
}
artifacts {
testArtifacts myTestsJar
}
项目B build.gradle
-
dependencies {
testCompile project(path: ':ProjectA', configuration: 'testArtifacts')
}
如您所见,我首先尝试通过使用人工配置来 Jar ProjectA 中的所有测试类,然后在 ProjectB 中使用该配置。这在使用 Android gradle pluign 2.3.3 时按预期工作。
现在,当迁移到 AGP 3.0 时,我的 ProjectAbuild.gradle
保持不变,尽管我已经修改了 projectBbuild.gradle
以使用testImplementation
而不是testCompile
像这样 -
dependencies {
testImplementation project(path: ':ProjectA', configuration: 'testArtifacts')
}
尽管在 ProjectB 中运行使用 ProjectA 中的测试类的任何测试时,这都能成功编译,但我得到了一个ClassNotFoundException
for ProjectA 测试类。此外,这只发生在我使用 Junit 运行配置在 Android Studio 中ClassNotFoundException
运行测试时,通过命令行运行测试时不会发生这种情况。
我不确定我在尝试让它工作时做错了什么。所以请帮忙!