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

IntelliJ中Cucumber+TestNG自动化测试场景/步骤跳过问题求助

Java+TestNG+Cucumber框架测试场景/步骤被跳过的排查与解决

一、先纠正Glue路径的核心错误

Glue路径必须是步骤定义类所在包的全限定名,不是文件系统路径、绝对路径或部分包名,这是最常见的配置误区:

  • 错误写法示例:D:/project/src/test/java/com/test/steps(绝对路径)、steps(部分包名)、com.test.step(拼写错误)
  • 正确写法示例:如果步骤类在com.test.automation.steps包下,Glue就填com.test.automation.steps

两种正确配置方式

1. TestNG Runner类注解配置

import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;

@CucumberOptions(
        features = "src/test/resources/features", // Feature文件所在资源目录
        glue = "com.test.automation.steps", // 步骤类的全限定包名
        plugin = {"pretty", "html:target/cucumber-report.html"} // 生成报告用于排查
)
public class TestRunner extends AbstractTestNGCucumberTests {
}

2. IntelliJ运行配置直接设置

直接运行Feature文件时,在Run Configuration的Glue字段中填入步骤类的全限定包名,不要填写任何路径类内容。

二、检查项目结构与步骤匹配

  • Feature文件位置:必须放在src/test/resources目录(或其子目录,如src/test/resources/features),Cucumber默认扫描该路径下的Feature文件。
  • 步骤定义匹配:Feature文件中的步骤文本必须与步骤类的注解文本完全一致,包括空格、大小写、特殊字符。例如Feature中是Given 我打开Chrome浏览器,步骤定义的@Given("我打开Chrome浏览器")不能多/少空格、不能改字。
  • 编译状态:执行Build -> Rebuild Project,检查target/test-classes目录下是否生成了步骤类的class文件,缺失编译文件会导致Cucumber无法识别步骤。

三、绝对路径引发错误的修复

绝对路径配置Glue会直接导致Cucumber无法识别包结构,必须换回包名配置,同时排查:

  • 依赖版本兼容性:Cucumber 7.x需搭配TestNG 7.x版本,版本不匹配会引发加载异常。
  • 依赖完整性:检查pom.xml(Maven)或build.gradle(Gradle)中是否引入了cucumber-java、cucumber-testng等核心依赖,且无缺失。

四、用Cucumber报告定位具体问题

通过plugin配置生成HTML报告(如上述Runner类中的html:target/cucumber-report.html),运行后打开报告可明确看到:

  • 场景被跳过的具体原因(找不到步骤定义/步骤不匹配/依赖加载失败等)
  • 未执行步骤的详细匹配对比信息

五、IntelliJ环境检查

  • 确保已安装并启用Cucumber for Java插件(Settings -> Plugins搜索Cucumber确认)
  • 运行配置的Test kind选择Cucumber Java,Feature file选择目标文件或留空扫描全部Feature

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:30:49