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

使用JUnit 5.8.1运行单元测试触发NoSuchMethodError异常如何处理

问题产生原因

该错误是JUnit 5各组件版本不兼容导致的:
JUnit 5.8.1版本的junit-jupiter-engine,依赖版本为1.8.1的junit-platform-commons,报错信息中缺失的findAnnotation三参数方法仅在1.8.1及以上版本的junit-platform-commons中存在。
当项目classpath中混入了低于1.8.1版本的junit-platform-commons(比如JUnit 5.7.2对应的1.7.2版本)时,运行时会优先加载低版本的类,找不到对应方法就会抛出NoSuchMethodError。

解决方案
  • 统一管理JUnit 5依赖版本,推荐使用官方BOM来避免版本不一致问题:
    Maven项目在pom.xml的dependencyManagement节点添加如下配置:

    <dependency>
      <groupId>org.junit</groupId>
      <artifactId>junit-bom</artifactId>
      <version>5.8.1</version>
      <scope>import</scope>
      <type>pom</type>
    </dependency>
    

    后续所有JUnit Jupiter、JUnit Platform相关依赖无需单独声明版本号,会自动和BOM版本保持一致。

    Gradle项目在build.gradle的依赖配置中添加如下内容:

    dependencies {
      testImplementation platform('org.junit:junit-bom:5.8.1')
    }
    
  • 排查并排除低版本冲突依赖:
    执行Maven命令mvn dependency:tree,或Gradle命令gradlew dependencies,搜索junit-platform-commons定位引入低版本的依赖,对该依赖添加排除规则移除低版本的junit-platform-commons即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:18:02