Android多项目测试依赖项设置在Android Studio 3.0中使用Android Gradle Plugin 3.0.0

时间:2018-03-21 12:59:25

标签: android android-studio android-gradle android-studio-3.0 android-gradle-3.0

我正在尝试从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

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

1 个答案:

答案 0 :(得分:0)

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