我们有一个多模块的Android项目,其中一些模块包含UI测试,一些模块包含单元测试。我们希望使用单个 Gradle 命令从所有模块运行所有 UI 测试,并对单元测试执行相同的操作。
我们发现这样做的唯一方法是在主app
模块中使用以下配置,该配置实现了所有其他子模块(基本上使app
模块知道项目中所有其他androidTest
和test
文件夹(:
app/build.gradle:
sourceSets {
androidTest.java.srcDirs += ["${project(':feature-login').projectDir}/src/androidTest/java"]
test.java.srcDirs += ["${project(':feature-login').projectDir}/src/test/java"]
test.java.srcDirs += ["${project(':core').projectDir}/src/test/java"]
}
然后我们运行以下 Gradle 命令:
./gradlew app:connectedDemoDebugAndroidTest
./gradlew app:testDemoDebugUnitTest
问题:有没有更好/更简单的方法来实现这一目标?或者有没有办法从上述解决方案动态添加androidTest
和test
文件夹(使用相对路径(,而不必为每个模块编写srcDirs
行(我们有 40+ 个模块(?
只是在终端中运行:
./gradlew test
请参阅文档以获取更多选项
我每天都这样做(我通常有一个用于单元测试的源代码集和一个用于较慢的集成测试的源代码集(:./gradlew check
.它运行所有测试任务。
来自 gradle 文档:
检查
取决于:测试
执行验证任务(如运行测试(的聚合任务。一些插件添加了自己的验证任务进行检查。如果您希望任何自定义测试任务针对完整构建执行,则还应将它们附加到此生命周期任务。此任务由基本插件添加。