这个问题是由于Mockito在尝试通过自我附加(self-attaching)的方式启用inline-mock-maker时触发的警告。随着JDK版本的升级,这种机制可能不再被支持,需要显式配置Mockito作为Java代理(agent)来解决问题。以下是逐步解决方案:
1. 确认依赖版本
首先检查项目中Mockito的版本。较新的Mockito版本可能已优化该问题。建议使用Mockito 3.12.x及以上版本(推荐最新稳定版)。
在 pom.xml 中升级Mockito版本:
<properties>
<mockito.version>5.11.0</mockito.version> <!-- 使用最新版本 -->
</properties>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>在 build.gradle 中升级Mockito:
testImplementation 'org.mockito:mockito-core:5.11.0' // 使用最新版本
需要在测试运行器中添加Java代理参数,使Mockito能够正确附加到JVM。
在 pom.xml 的 maven-surefire-plugin 中添加代理参数:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.0</version> <!-- 确保版本支持参数配置 -->
<configuration>
<argLine>
-javaagent:"${settings.localRepository}/org/mockito/mockito-agent/${mockito.version}/mockito-agent-${mockito.version}.jar"
</argLine>
</configuration>
</plugin>
</plugins>
</build>在 build.gradle 的测试任务中添加JVM参数:
test {
jvmArgs "-javaagent:${classpath.find { it.name.contains("mockito-agent") }.absolutePath}"
}如果项目间接依赖了旧版Mockito(例如通过Spring Boot Starter),可以通过排除旧依赖强制使用新版本。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> </exclusion> </exclusions> </dependency>
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.mockito', module: 'mockito-core'
}运行测试命令(如 mvn test 或 gradle test),观察是否仍有警告。如果配置正确,警告应消失且测试正常通过。
如果不需要Mockito的inline-mock-maker功能(例如不Mock final类或方法),可以移除mockito-inline依赖:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>




B2C电商系统商城源码支持pC+小程序+公众号+H5可打包App源...
原生开发淘宝客App,Android+ios独立开发,全开源支持二...
知识付费系统在线教育平台源码+题库系统源码,PC+公众号商业授权...
B2C单商户电商系统源码部署小程序+公众号+H5+App源码...
教育知识付费系统源码带题库功能商业授权公众号+H5源码...