更新JUnit与Mockito依赖后测试无法运行:MockMaker初始化失败
解决Mockito初始化失败(Byte Buddy依赖问题)
问题分析
你碰到的java.lang.IllegalStateException: 无法初始化org.mockito.plugins.MockMaker插件,核心原因就是Byte Buddy依赖缺失或版本不兼容——Mockito 5.x系列对Byte Buddy有明确的版本要求,net.bytebuddy.utility.GraalImageCode类属于Byte Buddy核心包,找不到说明依赖链出现了断裂或版本冲突。
解决方案
1. 显式添加兼容的Byte Buddy版本
Mockito 5.3.1需要搭配Byte Buddy 1.14.x系列版本,直接在子POM中添加这两个依赖:
<dependencies> <!-- JUnit Jupiter Engine --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.9.2</version> <scope>test</scope> </dependency> <!-- Mockito Core --> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>5.3.1</version> <scope>test</scope> </dependency> <!-- 补充兼容的Byte Buddy核心依赖 --> <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> <version>1.14.11</version> <scope>test</scope> </dependency> <!-- 补充Byte Buddy Agent依赖 --> <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-agent</artifactId> <version>1.14.11</version> <scope>test</scope> </dependency> </dependencies>
2. 强制统一Byte Buddy版本(解决依赖冲突)
如果父POM或其他第三方依赖引入了不同版本的Byte Buddy,可在子POM的<dependencyManagement>中强制锁定版本:
<dependencyManagement> <dependencies> <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> <version>1.14.11</version> </dependency> <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy-agent</artifactId> <version>1.14.11</version> </dependency> </dependencies> </dependencyManagement>
3. 验证依赖树确保无冲突
执行Maven命令查看Byte Buddy的依赖情况,确认版本是否统一:
mvn dependency:tree -Dincludes=net.bytebuddy
如果输出中出现多个版本,说明还有未排除的冲突,需在对应依赖中添加<exclusions>节点排除旧版本。
关键注意点
- Mockito 5.x完全不兼容Byte Buddy 1.13及以下版本,必须使用1.14+系列
- JUnit 5.9.2本身和Byte Buddy无强冲突,但要保证Mockito的依赖链完整
内容的提问来源于stack exchange,提问作者Rishabh Sharma
相关产品推荐
相关产品推荐

