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

Gradle运行Cucumber测试报错:Java进程非零退出值1求助

Gradle运行Cucumber测试报错:任务':io.cucumber.core.cli.Main.main()'执行失败(非零退出值1)

问题描述

使用Gradle运行Cucumber测试时触发报错:

任务':io.cucumber.core.cli.Main.main()'执行失败,提示进程'/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/bin/java'以非零退出值1结束。

已完成排查:

  • JAVA_HOME配置正确,Java版本为17.0.12 LTS(环境信息见下方)
  • Cucumber主类配置无误
  • IDEA选择“Intellij IDEA”构建运行测试完全正常,但切换为Gradle构建则触发上述错误
  • 已尝试谷歌及Stack Overflow相关方案,均未解决

环境信息:

alexander@MacBook-Pro-admin ~ % echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
alexander@MacBook-Pro-admin ~ % java -version
java version "17.0.12" 2024-07-16 LTS
Java(TM) SE Runtime Environment (build 17.0.12+8-LTS-286)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.12+8-LTS-286, mixed mode, sharing)

解决方法

1. 查看Gradle详细日志定位具体错误

非零退出值1是通用报错,必须获取更详细的日志才能定位问题。执行以下命令运行测试:

./gradlew test --info

或针对Cucumber任务单独查看:

./gradlew :io.cucumber.core.cli.Main.main() --info

日志中会包含Cucumber的具体错误(比如找不到.feature文件、依赖冲突、步骤定义缺失等),这是排查核心。

2. 强制Gradle使用指定JDK

IDEA使用项目指定JDK,但Gradle可能有独立配置。在项目根目录的gradle.properties中添加:

org.gradle.java.home=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home

确保Gradle与IDEA使用完全一致的JDK版本。

3. 验证Cucumber依赖与Gradle配置兼容性

检查build.gradle中Cucumber依赖版本是否适配Java 17,同时确保插件配置正确。示例配置:

plugins {
    id 'java'
    id 'io.cucumber' version '7.18.1' // 选择Java 17兼容的版本(7.x+)
}

dependencies {
    testImplementation 'io.cucumber:cucumber-java:7.18.1'
    testImplementation 'io.cucumber:cucumber-junit-platform-engine:7.18.1'
    testImplementation 'org.junit.platform:junit-platform-launcher:1.10.0'
}

cucumber {
    glue = ['com.yourpackage.steps'] // 步骤定义所在包路径,确保无拼写错误
    features = ['src/test/resources/features'] // .feature文件存放路径
}

4. 清理Gradle缓存并重建

缓存可能导致依赖加载异常,执行命令清理后重新构建:

./gradlew clean build --refresh-dependencies

5. 检查测试资源路径配置

确保.feature文件放在src/test/resources下的正确目录,Gradle能识别到这些资源。在build.gradle中确认:

sourceSets {
    test {
        resources {
            srcDirs = ['src/test/resources']
        }
    }
}

6. 验证步骤定义扫描范围

检查cucumber配置中的glue路径,确保覆盖所有步骤定义类所在的包,避免路径层级或拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:45:08