JUnit4升级JUnit5集成Mockito时出现NoSuchMethodError问题求助
解决JUnit 5 + Mockito升级中的
NoSuchMethodError依赖冲突问题 这个错误的核心原因是依赖版本不兼容——你使用的Spring Boot 2.1.7.RELEASE版本相对老旧,手动指定的JUnit Jupiter、Mockito版本和Spring Boot自带的依赖管理体系冲突,导致JUnit Platform核心类出现方法缺失。下面一步步帮你修复:
1. 移除手动引入的JUnit Jupiter依赖
Spring Boot Starter Test已经内置了适配当前Boot版本的JUnit Jupiter依赖,手动指定org.junit.jupiter:junit-jupiter:5.6.2会打破版本一致性,直接删掉这行:
testImplementation("org.junit.jupiter:junit-jupiter:5.6.2")
2. 适配Spring Boot的Mockito版本
你用的mockito-junit-jupiter:3.3.3版本过高,Spring Boot 2.1.7默认适配的Mockito版本是2.23.4,高版本Mockito会和老版本Spring测试组件出现兼容性问题。直接使用Spring Boot依赖管理的版本即可:
testImplementation("org.mockito:mockito-junit-jupiter")
3. 确保Vintage引擎被彻底排除
虽然你已经在spring-boot-starter-test里排除了vintage引擎,但依赖传递可能仍有残留,添加全局配置强化排除:
configurations { testImplementation { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' exclude group: 'junit', module: 'junit' } }
4. 清理缓存并重新构建
依赖冲突常因缓存中的旧依赖导致,执行以下命令彻底清理后重新构建:
./gradlew clean build --refresh-dependencies
修改后的完整build.gradle配置
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("org.springframework.boot") version "2.1.7.RELEASE" id("io.spring.dependency-management") version "1.0.8.RELEASE" kotlin("jvm") version "1.3.50" kotlin("plugin.spring") version "1.3.50" } group = "-" version = System.getenv("VERSION") ?: "local" java.sourceCompatibility = JavaVersion.VERSION_12 repositories { mavenCentral() } configurations { testImplementation { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' exclude group: 'junit', module: 'junit' } } dependencies { implementation("org.springframework.boot:spring-boot-starter-web") // 你的其他业务依赖... testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.mockito:mockito-junit-jupiter") } tasks.withType<KotlinCompile> { kotlinOptions { freeCompilerArgs = listOf("-Xjsr305=strict") jvmTarget = "12" } }
补充说明:Spring Boot的dependency-management插件会自动维护所有官方依赖的版本兼容性,手动指定高版本很容易引发这类问题。如果项目允许,建议升级到Spring Boot 2.7.x以上的稳定版本,会大幅减少这类版本冲突问题。
内容的提问来源于stack exchange,提问作者Sattar
相关产品推荐
相关产品推荐

