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

Mockito无法Mock ServiceLocator类问题求助(附依赖与栈信息)

解决Mockito无法Mock静态类(Java17 + ByteBuddy版本不兼容)

问题核心

你遇到的MockitoException根源是ByteBuddy 1.14.5不支持Java17的类文件主版本61,同时存在Mockito组件版本不一致(mockito-core:5.4.0与mockito-inline:5.2.0)的问题,双重冲突导致静态类Mock失败。

解决方案

1. 统一Mockito依赖版本并移除冗余依赖

Mockito的mockito-inline模块已经包含mockito-core的全部功能,且会自动引入兼容版本的ByteBuddy和Objenesis,无需手动指定这些依赖。修改Gradle依赖如下:

// 移除所有旧的Mockito、ByteBuddy、Objenesis依赖,替换为统一版本的mockito-inline
testImplementation 'org.mockito:mockito-inline:5.4.0'

2. 清理并重新构建项目

执行Gradle命令清理缓存并重新构建,确保依赖完全更新:

./gradlew clean build --refresh-dependencies

额外检查项

  • 确认ServiceLocator类不是final修饰的:即使使用mockito-inline,也无法Mockfinal静态类(若确为final类,需调整代码结构或使用PowerMock等替代方案)。
  • 检查依赖树是否存在冲突:运行./gradlew dependencies查看依赖树,若发现旧版本ByteBuddy/Mockito,需在对应依赖中通过exclude排除冲突项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:27:35