我有2个模块:A和B.
-A是一个独立的模块.它的测试本身运行得很好.
-B是依赖模块.它的测试需要A的测试文件夹中的某个文件(B中的一个测试文件在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' }
虽然这在技术上适用于我所需要的东西 – 它具有令人讨厌的副作用,每当我运行A的单元测试时,它们也运行所有B的测试.我真的很想,如果不是这样的话.
我正在使用Android Gradle 1.1(以及Android Studio 1.1),我认为这会给我带来一些问题.我已经尝试了所有可以找到的解决方案 – 不幸的是,它们似乎都不适用于Android Gradle 1.1 – 例如:
从B的build.gradle中删除sourceSets并添加(到B的依赖项)该行
testCompile project(':A').sourceSets.test.output
生成构建错误无法在SourceSet容器上找到属性“test”.
我是以错误的方式来做这件事的吗?是否有更简单/更好的方法在模块中包含测试文件?我是Gradle / Android Studio的新手,所以我完全有可能错过了一个死明显的解决方案.
解决方法
使用命令按树检查所有模块:
gradle projects
它将列出所有项目模块,您可以看到是否以正确的方式配置子项目.还运行命令:
gradle --gui
它将列出所有模块的所有任务,并且您始终可以独立于其他模块运行一个模块.
gradle A:tasks gradle A:test gradle B:test
或两者
gradle A:tasks B:test
注意:如果是根项目和B,C,D子模块,则无需指定A,但需要指定子模块.当你这样做时:
gradle --gui
您可以双击任何任务以查看它是如何运行的,您可以从命令行手动执行相同操作.希望这可以帮助