Cucumber配置@CucumberOptions后报NoSuchMethodError无法运行feature用例
问题根因
这个java.lang.NoSuchMethodError错误和你排查时误以为的feature路径无关,本质是Cucumber版本和JUnit版本不兼容导致的:
- 你使用的Cucumber 7.0.0最低要求JUnit 4.13及以上版本
- 你当前POM中固定了JUnit版本为
[4.10],这个版本的org.junit.runner.Description类不存在报错里提到的三个入参的createSuiteDescription方法,所以运行时直接抛出方法不存在错误。
解决步骤
- 修改POM.xml中的JUnit依赖配置,把固定的4.10版本升级到JUnit4的最新稳定版4.13.2,修改后配置如下:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency>
- 清理本地Maven缓存后重新构建项目,执行命令:
mvn clean install -U - 重启IDE后重新运行测试即可解决该问题。
额外注意事项
- 后续升级Cucumber版本时,优先确认对应兼容的JUnit版本,避免再次出现版本不匹配问题
- 不要给JUnit加严格的固定版本限制(你之前使用的
[4.10]写法会强制只能用4.10版本,没有升级空间),如果需要锁定大版本可以用[4.13,5.0)这样的范围写法,允许兼容的小版本升级。
内容的提问来源于stack exchange,提问作者Piotr
相关产品推荐
相关产品推荐

