Android Gradle 1.1 - 在另一个项目的测试中添加测试依赖项

Zam*_*ezi 7 android gradle android-studio android-gradle-plugin

我有2个模块:.

- A是独立模块.它的测试本身运行得很好.
- B是一个依赖模块.其测试需要在某个文件的测试文件夹(在一个测试文件延伸在一个)

 

这里是什么,我认为是相关部分build.gradle:

android { 
  ...
  sourceSets {
    test.java.srcDirs += "../A/src/test/java"
  }
}

dependencies {
  compile project(':A')

  testCompile 'junit:junit:4.10'
  testCompile 'org.robolectric:robolectric:2.4'
  testCompile 'org.mockito:mockito-core:1.9.5'
}
Run Code Online (Sandbox Code Playgroud)

虽然这在技术上适用于我需要的东西 - 它有令人讨厌的副作用,每当我运行A的单元测试时,它们也运行B的所有测试.我真的很想,如果不是这样的话.

 

我正在使用Android Gradle 1.1(以及Android Studio 1.1),我认为这会给我带来一些问题.我已经尝试了所有可以找到的解决方案 - 不幸的是,它们似乎都不适用于Android Gradle 1.1 - 例如:

除去sourceSetsbuild.gradle和添加(以的依赖关系)的线

 testCompile project(':A').sourceSets.test.output
Run Code Online (Sandbox Code Playgroud)

产生构建错误 Could not find property 'test' on SourceSet container.

 

我是以错误的方式来做这件事的吗?是否有更简单/更好的方法在模块中包含测试文件?我是Gradle/Android Studio的新手,所以我完全有可能错过了一个死明显的解决方案.

tes*_*ngh 0

使用命令按树检查所有模块:

gradle projects
Run Code Online (Sandbox Code Playgroud)

它将列出您的所有项目模块,您可以查看是否以正确的方式配置子项目。还运行命令:

gradle --gui
Run Code Online (Sandbox Code Playgroud)

它将列出所有模块的所有任务,并且您始终可以独立于其他模块运行一个模块,例如

gradle A:tasks
gradle A:test
gradle B:test
Run Code Online (Sandbox Code Playgroud)

或两者

gradle A:tasks B:test
Run Code Online (Sandbox Code Playgroud)

注意:如果是根项目和B、C、D子模块,则不需要指定A,但对于子模块,则需要指定它。当你这样做时:

gradle --gui
Run Code Online (Sandbox Code Playgroud)

您可以双击任何任务以查看其运行方式,也可以从命令行手动执行相同的操作。希望这可以帮助