执行Feature文件时出现‘Deprecated Main Class’警告及步骤片段缺失问题
Cucumber运行警告及步骤代码片段问题解决
一、处理cucumber.api.cli.Main废弃警告
警告提示当前使用的cucumber.api.cli.Main类已过时,需替换为io.cucumber.core.cli.Main:
- 若是IDE运行配置启动,找到运行配置的主类设置,直接把
cucumber.api.cli.Main替换成io.cucumber.core.cli.Main - 若是Maven命令运行,检查
cucumber-maven-plugin的配置,确保<mainClass>标签指定为io.cucumber.core.cli.Main:<plugin> <groupId>io.cucumber</groupId> <artifactId>cucumber-maven-plugin</artifactId> <version>你的Cucumber版本号</version> <configuration> <mainClass>io.cucumber.core.cli.Main</mainClass> <!-- 其他配置如features、glue等 --> </configuration> </plugin>
二、解决无法获取步骤代码片段的问题
按以下步骤逐一排查:
- 指定步骤定义的扫描包
必须明确告诉Cucumber去哪里找步骤定义类:- IDE运行时,在Program arguments里添加
--glue 你的步骤定义包路径(比如--glue com.test.stepdefs) - Maven插件配置中,添加
<glue>标签指定包:<configuration> <glue>com.test.stepdefs</glue> <features>src/test/resources/features</features> </configuration>
- IDE运行时,在Program arguments里添加
- 统一Cucumber依赖版本
所有Cucumber相关依赖(cucumber-core、cucumber-java、cucumber-junit等)必须使用相同版本,版本不一致会导致功能异常。另外,移除cucumber-jvm-deps,新版本Cucumber已不再需要这个依赖,留着可能引发冲突。 - 检查Feature文件路径
确保Feature文件放在标准资源目录(如src/test/resources/features),且运行配置或Maven插件中正确指定了Feature文件的路径。 - 改用JUnit运行器执行
直接运行Feature文件容易出现配置遗漏,建议创建JUnit测试类来执行:
运行这个JUnit类后,控制台会自动输出未定义步骤的代码片段,直接复制到步骤定义类中即可。import io.cucumber.junit.Cucumber; import io.cucumber.junit.CucumberOptions; import org.junit.runner.RunWith; @RunWith(Cucumber.class) @CucumberOptions( features = "src/test/resources/features", glue = "com.test.stepdefs", monochrome = true ) public class LoginTestRunner { }
内容的提问来源于stack exchange,提问作者nagesh naga
相关产品推荐
相关产品推荐

