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

启用Mockito inline时Byte Buddy mock maker初始化失败,求解决

问题:Mockito inline模式初始化失败

常规模式下测试正常运行,但启用Mockito inline模式时出现初始化错误,具体错误日志如下:

[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 25.556 s <<< FAILURE! - in es.ddmain.utils.FileSystemUtilsTest
[ERROR] testIntentarSubirImagenYtestBorrarFichero  Time elapsed: 25.548 s  <<< ERROR!
java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)
        at es.ddmain.utils.FileSystemUtilsTest.testIntentarSubirImagenYtestBorrarFichero(FileSystemUtilsTest.java:61)
Caused by: java.lang.IllegalStateException: Failed to load interface org.mockito.plugins.MockMaker implementation declared in java.lang.CompoundEnumeration@249676e4
        at es.ddmain.utils.FileSystemUtilsTest.testIntentarSubirImagenYtestBorrarFichero(FileSystemUtilsTest.java:61)
Caused by: java.lang.reflect.InvocationTargetException
        at es.ddmain.utils.FileSystemUtilsTest.testIntentarSubirImagenYtestBorrarFichero(FileSystemUtilsTest.java:61)
Caused by: org.mockito.exceptions.base.MockitoInitializationException:

Could not initialize inline Byte Buddy mock maker.

It appears as if your JDK does not supply a working agent attachment mechanism.
Java               : 11
JVM vendor name    : Oracle Corporation
JVM vendor version : 11.0.2+9-LTS
JVM name           : Java HotSpot(TM) 64-Bit Server VM
JVM version        : 11.0.2+9-LTS
JVM info           : mixed mode
OS name            : Windows 7
OS version         : 6.1

        at es.ddmain.utils.FileSystemUtilsTest.testIntentarSubirImagenYtestBorrarFichero(FileSystemUtilsTest.java:61)
Caused by: java.lang.IllegalStateException: Could not self-attach to current VM using external process
        at es.ddmain.utils.FileSystemUtilsTest.testIntentarSubirImagenYtestBorrarFichero(FileSystemUtilsTest.java:61)

使用的Mockito依赖:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-junit-jupiter</artifactId>
    <version>4.8.1</version>
    <scope>test</scope>
</dependency>
解决方案
  • 升级JDK版本:你使用的JDK 11.0.2属于早期版本,部分JVM附件机制存在兼容性问题。升级到JDK 11的最新补丁版本(如11.0.20+),或直接切换到JDK 17(LTS版本,兼容性更稳定),可解决VM自附加失败的问题。

  • 手动添加Byte Buddy依赖:Mockito inline模式依赖Byte Buddy,虽然mockito-junit-jupiter会间接引入,但可能存在版本匹配问题。手动添加指定版本的Byte Buddy依赖,确保与Mockito版本兼容:

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

(注:Mockito 4.8.1对应的Byte Buddy兼容版本为1.12.x系列,可根据实际情况微调)

  • 禁用自附加机制:若无法升级JDK,可通过系统属性关闭Mockito的自附加功能,改用手动指定Java agent的方式:
    1. 在测试启动参数中添加:-javaagent:path/to/byte-buddy-agent-xxx.jar
    2. 或在测试类中提前设置系统属性:
static {
    System.setProperty("mockito.mock-maker-inline.attach", "false");
}
  • 降级Mockito版本:若上述方法均无效,可尝试降级到Mockito 3.x系列(如3.12.4),旧版本的inline模式对JDK 11早期版本兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 20:45:07