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

执行Cucumber运行器文件时遇java.lang.AbstractMethodError错误求助

解决Cucumber运行时java.lang.AbstractMethodError错误

核心原因

你的问题源于Cucumber相关依赖版本不兼容:cucumber-junit:7.3.4与cucumber-java:7.13.0、cucumber-testng:7.13.0版本差异过大。高版本的Cucumber核心接口新增了uuidGenerator()方法,但低版本的cucumber-junit实现类未实现该方法,导致运行时抛出抽象方法未找到错误。

修复步骤

1. 统一所有Cucumber依赖版本

将所有Cucumber相关依赖的版本统一为7.13.0,确保接口与实现类版本匹配:

Maven依赖示例

<dependencies>
    <!-- Cucumber核心依赖,版本统一 -->
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>7.13.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>7.13.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-testng</artifactId>
        <version>7.13.0</version>
        <scope>test</scope>
    </dependency>

    <!-- JUnit与Selenium版本保持现有兼容版本即可 -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.12.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Gradle依赖示例

testImplementation 'io.cucumber:cucumber-java:7.13.0'
testImplementation 'io.cucumber:cucumber-junit:7.13.0'
testImplementation 'io.cucumber:cucumber-testng:7.13.0'
testImplementation 'junit:junit:4.12'
testImplementation 'org.seleniumhq.selenium:selenium-java:4.12.1'

2. 清理本地依赖缓存

执行命令清理旧版本依赖残留,确保新依赖生效:

  • Maven:mvn clean install -U
  • Gradle:gradle clean build --refresh-dependencies

3. 简化依赖(可选)

如果没有同时使用JUnit和TestNG的需求,建议只保留其中一种测试框架对应的Cucumber依赖(比如仅保留cucumber-junit或cucumber-testng),减少潜在冲突。

4. 验证运行器配置

确保你的Cucumber运行器类只使用单一测试框架注解:

  • JUnit运行器:使用@RunWith(Cucumber.class)
  • TestNG运行器:使用@CucumberOptions结合TestNG的测试类规范,避免混用两种框架注解。

补充说明

你之前尝试更换版本但未统一所有Cucumber依赖版本,添加serenity、picocontainer等依赖无法解决版本不兼容的核心问题,反而可能引入额外冲突。统一版本是解决此类接口实现不匹配错误的关键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:22:12