You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Gradle BuildTypes,仅在Jest测试通过后执行构建?

在Android构建前强制执行React Native Jest测试的Gradle配置

没问题,我帮你搞定这个问题!你之前的任务只是打印文本,没有实际执行Jest测试,这就是构建异常的核心原因之一。我们需要创建一个能真正运行测试的Gradle任务,再让构建任务依赖它,这样测试失败时就能直接终止构建流程。

第一步:创建执行Jest测试的Gradle任务

在你的android/app/build.gradle文件中,把这段代码放在android块的外部(比如dependencies块之后):

task runJestTests(type: Exec) {
    // 指向React Native项目根目录(默认Android模块在根目录的android文件夹下)
    workingDir rootProject.projectDir
    
    // 执行npm测试命令,用yarn的话改成 ['yarn', 'test']
    commandLine 'npm', 'run', 'test'
    
    // 关键配置:测试失败时(退出码非0)直接终止Gradle构建
    ignoreExitValue false
    // 将测试日志输出到Gradle控制台,方便查看失败原因
    standardOutput = System.out
    errorOutput = System.err
}

第二步:让构建任务绑定测试任务

根据你的需求,有两种绑定方式可选:

方式1:所有构建前都执行测试

如果你希望debug、dev、staging、release所有构建类型都先跑测试,就添加这段代码:

// 让所有assemble类型的任务都依赖Jest测试
tasks.withType(Assemble) {
    dependsOn runJestTests
}

方式2:仅针对特定BuildType执行测试

如果只想在发布类构建(比如release、staging)前跑测试,就单独指定这些任务:

// 给release构建绑定测试
tasks.named('assembleRelease') {
    dependsOn runJestTests
}
// 给staging构建绑定测试
tasks.named('assembleStaging') {
    dependsOn runJestTests
}
// 如需给dev/debug添加,同理复制上面的代码修改任务名即可

额外注意事项

  • 如果Gradle提示找不到npm/yarn命令,可以使用命令的绝对路径,比如Mac/Linux下的/usr/local/bin/npm,Windows下的C:/Program Files/nodejs/npm.cmd。
  • 若你的Jest测试脚本名不是test(比如自定义为jest),记得修改commandLine里的参数。
  • 测试失败时,Gradle会直接输出Jest的错误日志,并终止后续构建,完全符合你的需求。

现在你可以尝试运行构建命令(比如./gradlew assembleDebug),Gradle会先执行Jest测试,只有测试全部通过才会继续构建流程。

内容的提问来源于stack exchange,提问作者David Geismar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:13:24