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

SpringBoot Mockito测试出现MockitoSessionBuilder NoSuchMethodError求助

错误根因

该错误是Mockito核心包版本与Mockito-JUnit5扩展版本不匹配导致:

  • Spring Boot 2.4.2默认管理的Mockito版本为3.6.28,配套的Mockito-Jupiter扩展可以正常调用mockitoSession()方法
  • 你手动在maven-surefire-plugin中添加了版本为1.0.1的junit-platform-surefire-provider依赖,该版本属于JUnit5早期版本,会拉取低版本的Mockito相关依赖,覆盖了Spring Boot默认的兼容版本,最终触发方法找不到的异常
  • 测试类上的@RunWith(JUnitPlatform.class)是JUnit4运行JUnit5测试的兼容注解,额外增加了运行时的兼容风险
解决步骤
  1. 清理maven-surefire-plugin的冗余依赖
    删除插件下的junit-platform-surefire-provider依赖配置,Spring Boot 2.4+已经内置了适配好的测试插件配置,无需手动添加该依赖:
<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <!-- 移除内部的junit-platform-surefire-provider依赖即可 -->
</plugin>
  1. (可选)显式锁定Mockito兼容版本
    如果存在其他第三方依赖拉取低版本Mockito的情况,可以在pom的properties节点中手动指定匹配版本:
<properties>
    <java.version>15</java.version>
    <!-- 和Spring Boot 2.4.2默认配套的Mockito版本 -->
    <mockito.version>3.6.28</mockito.version>
</properties>
  1. 移除测试类的冗余注解
    删除@RunWith(JUnitPlatform.class)注解,仅保留JUnit5原生的扩展注解即可:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
public class UserServiceTest {
        
    @Test
    public void testUserServiceCreation() {     
        // 测试逻辑
    }
}
  1. 刷新依赖缓存
    执行mvn clean install命令清理本地旧依赖,重新拉取匹配版本的依赖后即可正常运行测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:00:01