1

我正在尝试从 Android gradle 插件 2.3.3 迁移到 3.0。我设置了 2 个项目,其中 ProjectB 中的测试使用src/test/javaProjectA 中存在的测试类。我在使用 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 中的测试类的任何测试时,这都能成功编译,但我得到了一个ClassNotFoundExceptionfor ProjectA 测试类。此外,这只发生在我使用 Junit 运行配置在 Android Studio 中ClassNotFoundException运行测试时,通过命令行运行测试时不会发生这种情况。

我不确定我在尝试让它工作时做错了什么。所以请帮忙!

4

1 回答 1

1

原来它与 Gradle 缓存有关,我通过删除项目.gradle目录解决了这个问题。

于 2018-04-23T10:01:12.093 回答