在Gradle中每次构建之前运行单元测试

man*_*cas 11 android unit-testing gradle build.gradle

如何build.gradle在每个调试或发布版本之前配置Android项目以运行所有单元测试?我知道我可以设置任务依赖项dependsOn,但是如何为单元测试任务指定它?我想为我的项目的每个(Android和普通Java)模块执行此操作,是否可能?

Sta*_*lav 12

您是否有特殊任务只能运行单元测试?或者,你可以自由简单运行它test(或更一般testDebugtestRelease)?比方说,你想要跑testDebugtestRelease每次打电话assembleDebugassembleRelease任务.然后,正如您所指出的那样,您可以使用dependsOn任务属性.例如这样:

assembleDebug.dependsOn testDebug
assembleRelease.dependsOn testRelease
Run Code Online (Sandbox Code Playgroud)

必须将此配置添加到您需要的每个build.gradle脚本(在项目的每个模块中).如果您有许多测试任务,则可以通过以下方式设置任务依赖性:

tasks.assembleRelease.dependsOn {
    project.tasks.findAll { task ->
        task.name.startsWith('testRelease')
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,你可以尝试在根build.gradle脚本的根目录中设置这个依赖项,使用allprojectssubprojects(你可以在这里阅读),但是你也必须android在根脚本中应用插件,否则将找不到任务.

  • 我有一个包含Android和普通Java模块的项目.我现在只有简单的JUnit测试.在我的普通Java模块中,一切似乎在gradle文件末尾的`jar.dependsOn test`下工作正常(如果测试失败,则构建停止).在我的Android模块中,使用`assembleDebug.dependsOn testDebug`,我在BuildType_Decorated`上收到错误`找不到属性'testDebug'.我应该把这条线放在哪里?谢谢! (4认同)