命令行运行Cucumber测试无法识别Step Definitions问题求助
问题根因
你遇到的问题核心是@CucumberOptions中的glue配置错误:glue参数需要指定步骤定义类所属的Java包名,而非文件系统的源码路径,你填写的classpath:src\\test\\java在命令行运行时无法匹配到编译后的步骤类。
IDEA运行正常是因为IDE会默认将src/test/java加入运行时classpath,错误路径碰巧能匹配到源码中的步骤类,而命令行运行时使用的是target/test-classes下编译后的产物,不存在src/test/java这个路径,因此无法识别步骤定义。
解决方案
1. 修正glue配置
将@CucumberOptions中的glue字段修改为你的LoginSteps类实际所属的包名:
示例:如果你的LoginSteps类顶部的包声明为package com.xxx.test.steps;,则修改为:
@CucumberOptions( glue={"com.xxx.test.steps"}, features = "src/test/resources", plugin={"pretty","html:target/site/cucumber-pretty","json:target/cucumber.json"})
如果你的LoginSteps没有声明包(不推荐该写法),则直接配置为空:
glue={""},
2. 清理编译后重试
修改完成后,执行清理命令后再运行测试即可:
# Maven项目执行 mvn clean test # Gradle项目执行 gradle clean test
内容的提问来源于stack exchange,提问作者skv
相关产品推荐
相关产品推荐

