IntelliJ中运行Cucumber测试报NoSuchElementException异常求助
解决IntelliJ中Cucumber测试抛出NoSuchElementException的问题
错误详情
执行Cucumber测试时出现以下异常:
Exception in thread "main" java.util.NoSuchElementException at java.base/java.util.ArrayList$Itr.next(ArrayList.java:1000) at java.base/java.util.Collections.max(Collections.java:713) at io.cucumber.core.feature.FeatureParser.parseResource(FeatureParser.java:46) at java.base/java.util.function.BiFunction.lambda$andThen$0(BiFunction.java:70)
问题根源
从你的POM配置来看,存在两个核心问题:
- 不必要的核心依赖排除:你手动排除了
cucumber-core、cucumber-gherkin、cucumber-gherkin-messages等Cucumber运行必需的组件,这些是解析Feature文件、执行测试逻辑的基础,缺失会直接导致解析流程崩溃。 - 版本不兼容:手动指定的
messages依赖版本(21.0.1)与${cucumber.version}对应的版本不匹配,Cucumber全组件必须使用统一版本才能正常协作。
修复方案
步骤1:移除所有不必要的依赖排除
删除所有Cucumber相关依赖中的<exclusions>配置,让Maven自动管理依赖传递,确保核心组件正常引入。
步骤2:统一Cucumber版本
确保所有Cucumber依赖使用相同版本,无需手动引入messages(核心依赖会自动传递该组件)。
修复后的POM依赖示例
假设${cucumber.version}设置为稳定版本(如7.14.0),调整后的配置如下:
<properties> <cucumber.version>7.14.0</cucumber.version> </properties> <dependencies> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-spring</artifactId> <version>${cucumber.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>${cucumber.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-java</artifactId> <version>${cucumber.version}</version> <scope>test</scope> </dependency> </dependencies>
步骤3:刷新项目并重新测试
- 在IntelliJ中点击Maven面板的Reload All Maven Projects按钮,确保依赖正确下载。
- 执行
mvn clean install清理并构建项目。 - 重新运行Cucumber测试。
额外检查点
- 确认Feature文件语法正确,无格式错误(如缺失关键字、缩进混乱)。
- 检查测试运行器配置,确保指定了正确的Feature文件路径和步骤定义包。
内容的提问来源于stack exchange,提问作者Daniel ORTIZ
相关产品推荐
相关产品推荐

