我有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 的sourceSets
中删除build.gradle
并添加(到 B 的依赖项)行
testCompile project(':A').sourceSets.test.output
生成构建错误Could not find property 'test' on SourceSet container.
我是以错误的方式来做这件事的吗?是否有更简单/更好的方法在模块中包含测试文件?我是Gradle / Android Studio的新手,所以我完全有可能错过一个死的明显解决方案。
答案 0 :(得分:0)
使用命令
按树检查所有模块gradle projects
它将列出您的所有项目模块,您可以看到是否以正确的方式配置子项目。还运行命令:
gradle --gui
它将列出所有模块的所有任务,并且您始终可以独立于其他模块运行一个模块。
gradle A:tasks
gradle A:test
gradle B:test
或两者
gradle A:tasks B:test
注意:如果是根项目和B,C,D子模块,则无需指定A,但需要指定子模块。当你这样做时:
gradle --gui
您可以双击任何任务以查看其运行方式,也可以从命令行手动执行相同操作。希望这有帮助