我正在尝试从Android gradle插件2.3.3迁移到3.0。我设置了2个项目,其中ProjectB中的测试使用ProjectA中src/test/java
中的测试类。我使用以下设置来实现这一点,同时使用android gradle插件2.3.3 -
ProjectA build.gradle
-
task myTestsJar(type: Jar, dependsOn: testClasses) {
from sourceSets.test.output
}
configurations {
testArtifacts
}
artifacts {
testArtifacts myTestsJar
}
ProjectB build.gradle
-
dependencies {
testCompile project(path: ':ProjectA', configuration: 'testArtifacts')
}
正如您所看到的,我首先尝试使用artificat配置来生成ProjectA中的所有测试类,然后在ProjectB中使用该配置。使用Android gradle pluign 2.3.3时,这正如预期的那样工作。
现在迁移到AGP 3.0时,我的ProjectA build.gradle
仍然相同,但我已将projectB build.gradle
修改为使用testImplementation
而不是testCompile
这样 -
dependencies {
testImplementation project(path: ':ProjectA', configuration: 'testArtifacts')
}
虽然在使用ProjectA中的测试类的ProjectB中运行任何测试时成功编译,但我获得了ProjectA测试类的ClassNotFoundException
。此外,这只发生在我使用Junit运行配置在Android Studio中运行测试时,并且在通过命令行运行测试时不会发生此类ClassNotFoundException
。
我不确定在尝试使其工作时我做错了什么。所以请帮忙!
答案 0 :(得分:0)
原来它与Gradle缓存有关,我通过删除项目的.gradle
目录解决了这个问题。