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

运行Mockito测试时报net.bytebuddy.agent.ByteBuddyAgent类缺失错误如何解决

报错原因

该错误核心是项目运行时类路径缺失Byte Buddy Agent依赖:

  1. 你当前启用了Mockito的InlineByteBuddyMockMaker实现(通常用于支持mock final类、静态方法、构造方法等高级特性),该实现强依赖net.bytebuddy.agent.ByteBuddyAgent类,依赖缺失就会触发ClassNotFoundException。
  2. 错误提示里提到的JDK agent挂载机制异常是依赖缺失后的衍生提示,你使用的Oracle JDK 1.8本身完全支持agent挂载能力,不存在JDK层面的问题。
  3. 后续的MockMaker加载失败是前序类找不到导致的连锁异常。
可行解决方案

根据你的使用场景选择以下任意一种方案即可:

  • 方案1:补充Byte Buddy Agent依赖
    如果你需要保留Inline MockMaker的高级特性,直接在构建配置中添加对应版本的byte-buddy-agent依赖即可,注意版本要和你当前Mockito依赖的Byte Buddy版本保持一致,避免兼容性问题。
    Maven配置示例:
    <dependency>
        <groupId>net.bytebuddy</groupId>
        <artifactId>byte-buddy-agent</artifactId>
        <version>1.12.23</version>
        <scope>test</scope>
    </dependency>
    
    Gradle配置示例:
    testImplementation 'net.bytebuddy:byte-buddy-agent:1.12.23'
    
  • 方案2:切换为默认MockMaker实现
    如果你不需要mock final类、静态方法这类高级特性,直接切回Mockito默认的子类生成MockMaker即可,不需要额外依赖。
    操作方法:找到项目test/resources/META-INF/services/org.mockito.plugins.MockMaker配置文件,删除里面的org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker配置,或者将配置内容替换为org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker。
  • 方案3:直接使用mockito-inline整合依赖
    Mockito 3.5及以上版本提供了开箱即用的mockito-inline依赖,已经内置了byte-buddy-agent和Inline MockMaker的自动配置,不需要额外手动配置依赖和MockMaker文件。引入该依赖后不需要再单独引入mockito-core,避免版本冲突。
    Maven配置示例:
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-inline</artifactId>
        <version>4.11.0</version>
        <scope>test</scope>
    </dependency>
    
    Gradle配置示例:
    testImplementation 'org.mockito:mockito-inline:4.11.0'
    

内容的提问来源于stack exchange,提问作者tinner-ping

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:06:04