升级Maven至4.0.0-alpha-12后遇Mockito相关NoSuchMethodError求助
解决Mockito
NoSuchMethodError 问题 错误原因
org.mockito.MockitoAnnotations.openMocks() 方法是在Mockito 3.4.0版本中新增的,出现该错误说明项目运行时加载的Mockito版本低于3.4.0,和Spring Boot 2.7.18自带的Mockito 4.5.1版本冲突——大概率是Maven升级后,某个依赖引入了更低版本的Mockito,覆盖了spring-boot-starter-test提供的版本。
可行解决步骤
1. 排查依赖冲突
执行Maven命令查看项目依赖树,定位引入旧版本Mockito的依赖:
mvn dependency:tree | grep mockito
从输出结果里找出所有包含mockito-core或mockito-junit-jupiter的条目,确认是否有版本低于4.5.1的记录,以及对应的父依赖。
2. 排除冲突的旧版本依赖
找到引入低版本Mockito的依赖后,在pom.xml中给该依赖添加排除规则,禁止它引入旧版本的Mockito:
<dependency> <!-- 替换为实际引入旧版本Mockito的依赖信息 --> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <version>xxx</version> <exclusions> <exclusion> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> </exclusion> <exclusion> <groupId>org.mockito</groupId> <artifactId>mockito-junit-jupiter</artifactId> </exclusion> </exclusions> </dependency>
3. 强制统一Mockito版本
如果不想逐个排查冲突,可在pom.xml的dependencyManagement块中强制指定Mockito版本,确保所有依赖都使用和Spring Boot匹配的4.5.1版本:
<dependencyManagement> <dependencies> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>4.5.1</version> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-junit-jupiter</artifactId> <version>4.5.1</version> </dependency> </dependencies> </dependencyManagement>
4. 规范JUnit依赖使用
你同时引入了JUnit 4和JUnit 5,建议尽量统一测试框架版本:
- 若以JUnit 5为主,确保
mockito-junit-jupiter版本和mockito-core一致; - 若保留JUnit 4,需确保
mockito-core版本正确,且不要混用JUnit 5的测试注解和JUnit 4的运行环境。
内容的提问来源于stack exchange,提问作者Deepika M
相关产品推荐
相关产品推荐

