Cucumber 7.11.0无法找到feature文件,JUnit平台套件引擎报错
问题排查与解决方案
可能的原因及对应修复步骤
1. Failsafe插件配置干扰资源加载
你给maven-failsafe-plugin加了<useSystemClassLoader>false</useSystemClassLoader>,这会导致Cucumber没法从测试类路径里找到features目录下的文件。另外forkCount=0(不创建独立进程运行测试)也可能和类加载器设置冲突,影响资源扫描。
修复方案:
调整插件配置,移除useSystemClassLoader设置(或改成true),同时建议用默认的forkCount=1(通过独立进程运行测试,避免类加载器污染):
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>3.0.0-M8</version> <configuration> <forkCount>1</forkCount> <skip>${release}</skip> </configuration> <executions> <execution> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> </plugin>
2. TestRunner注解路径匹配不明确
虽然项目结构里features在src/test/resources下,@SelectClasspathResource("features")理论上没问题,但可以试试更明确的写法,或者把Glue路径精确到stepdefinition包:
@Suite @IncludeEngines("cucumber") // 直接指定具体feature文件,确保路径指向类路径根下的资源 @SelectClasspathResource("features/test.feature") @ConfigurationParameter(key = PLUGIN_PROPERTY_NAME, value = "pretty") // 精确指定step定义所在包,减少不必要的扫描 @ConfigurationParameter(key = GLUE_PROPERTY_NAME, value = "com.app.rs.api.cucumber.stepdefinition") public class TestRunner {}
3. JUnit平台依赖缺失
Failsafe插件运行时可能需要junit-platform-launcher来启动测试引擎,你当前的依赖里没加这个,补充到测试依赖中:
<dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-launcher</artifactId> <version>1.9.2</version> <scope>test</scope> </dependency>
4. 测试资源未正确复制到编译目录
执行mvn clean test-compile后,检查target/test-classes/features目录下是否有test.feature文件。如果没有,说明Maven没把测试资源复制过去,检查pom.xml里有没有自定义的maven-resources-plugin配置导致资源被忽略,调整配置确保src/test/resources下的内容能被正常复制。
验证步骤
- 执行
mvn clean verify,观察是否还存在测试引擎错误和找不到feature文件的问题。 - 如果还是有问题,先在IDE里直接运行TestRunner类,确认是否能正常找到feature文件,排除Maven插件层面的问题。
内容的提问来源于stack exchange,提问作者Reid2
相关产品推荐
相关产品推荐

