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
相关产品推荐
相关产品推荐

