You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决java.lang.NoSuchMethodError: io.cucumber.core.options.RuntimeOptions.isStrict()错误

异常原因

该java.lang.NoSuchMethodError异常是Cucumber核心包版本与Serenity Cucumber适配器版本不兼容导致的:
你当前使用的serenity-cucumber5:2.2.6是专门适配Cucumber 5.x系列的适配器,但你引入的io.cucumber:cucumber-java、io.cucumber:cucumber-junit版本为6.11.0,Cucumber 6版本中已经修改/移除了RuntimeOptions.isStrict()方法,适配器调用该方法时找不到对应实现就会抛出异常。

解决方案

以下两种方案二选一即可:

方案1:降低Cucumber版本至5.x系列,适配现有适配器

修改gradle.build中Cucumber版本号为适配2.2.6版本适配器的5.7.0即可:

ext{
    serenity_core_version = "2.5.8"
    serenity_cucumber_version = "5.7.0" // 从6.11.0改为5.7.0
    serenity_cucumber5_version = "2.2.6"
}

其余依赖配置不需要调整。

方案2:升级Serenity Cucumber适配器,适配现有Cucumber 6版本

将适配Cucumber5的适配器替换为适配Cucumber6的版本,且保持适配器版本与Serenity Core版本一致即可:

ext{
    serenity_core_version = "2.5.8"
    serenity_cucumber_version = "6.11.0"
    serenity_cucumber6_version = "2.5.8" // 新增Cucumber6适配器版本,与core版本对齐
}
dependencies {
    compile localGroovy()
    compile "net.serenity-bdd:serenity-core:$serenity_core_version"
    compile "net.serenity-bdd:serenity-junit:$serenity_core_version"
    compile "io.cucumber:cucumber-java:$serenity_cucumber_version"
    compile "io.cucumber:cucumber-junit:$serenity_cucumber_version"
    compile "net.serenity-bdd:serenity-screenplay:$serenity_core_version"
    compile "net.serenity-bdd:serenity-screenplay-webdriver:$serenity_core_version"
    compile "net.serenity-bdd:serenity-emailer:2.1.0"
    compile "net.serenity-bdd:serenity-screenplay-rest:$serenity_core_version"
    // 把原来的serenity-cucumber5替换为serenity-cucumber6
    compile "net.serenity-bdd:serenity-cucumber6:$serenity_cucumber6_version"
    // 移除重复声明的serenity-junit依赖
}
验证操作

修改配置后执行./gradlew clean build清除旧的依赖缓存,再运行测试即可解决该异常。

内容的提问来源于stack exchange,提问作者cristianccrj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:48:02