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

使用Mockito 3.12.4 mock HttpClient 4.5.5触发NoSuchMethodError如何解决

问题根因

该错误本质是ByteBuddy版本冲突,和HttpClient本身的类属性无关(HttpClient是公共接口,完全符合Mockito的mock要求),外层抛出的MockitoException属于底层错误触发的上层误导性提示:

  • Mockito 3.12.4 依赖ByteBuddy 1.11.13版本,报错的appendMostSpecific方法是该版本新增的API
  • 你的项目中存在其他依赖引入了更低版本的ByteBuddy,运行时JVM优先加载了低版本ByteBuddy类,找不到对应方法就会抛出NoSuchMethodError,最终导致Mockito创建mock对象失败
解决方案

方案1:强制指定ByteBuddy版本

统一ByteBuddy版本到Mockito 3.12.4要求的1.11.13及以上兼容版本即可。
Maven项目可在pom.xml的dependencyManagement节点添加强制配置:

<dependency>
    <groupId>net.bytebuddy</groupId>
    <artifactId>byte-buddy</artifactId>
    <version>1.11.13</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>net.bytebuddy</groupId>
    <artifactId>byte-buddy-agent</artifactId>
    <version>1.11.13</version>
    <scope>test</scope>
</dependency>

Gradle项目可在build.gradle中添加强制版本规则:

configurations.all {
    resolutionStrategy.force 'net.bytebuddy:byte-buddy:1.11.13'
    resolutionStrategy.force 'net.bytebuddy:byte-buddy-agent:1.11.13'
}

方案2:升级依赖版本

将Mockito升级到最新稳定版,同时排查项目中引入低版本ByteBuddy的第三方依赖,将对应依赖升级到兼容高版本ByteBuddy的版本,彻底解决版本冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:06:03