迁移至Spring Boot 3.2.1后JUnit测试出现NoSuchMethodError问题求助
解决方案:JUnit Jupiter版本依赖冲突修复
错误原因
java.lang.NoSuchMethodError: 'org.junit.jupiter.api.extension.ExecutableInvoker org.junit.jupiter.api.extension.ExtensionContext.getExecutableInvoker()' 这个错误的核心是项目依赖的JUnit Jupiter版本低于5.9.0——该方法是JUnit Jupiter 5.9.0才新增的API。
你的项目里,Spring Boot 3.2.1默认绑定JUnit Jupiter 5.10.1,但由于spring-cloud-azure-dependencies BOM的导入优先级高于Spring Boot自身的依赖管理BOM,导致JUnit版本被Azure BOM中的旧版本覆盖,引发了兼容性问题。
修复步骤
修改build.gradle中的dependencyManagement配置,优先导入Spring Boot的依赖BOM,确保Spring Boot管控的依赖版本(包括JUnit Jupiter)不会被其他BOM覆盖:
dependencyManagement { imports { // 先导入Spring Boot的依赖BOM,保障版本优先级 mavenBom "org.springframework.boot:spring-boot-dependencies:${springBootVersion}" mavenBom "com.azure.spring:spring-cloud-azure-dependencies:${springCloudAzureVersion}" } }
验证方法
执行Gradle命令查看测试依赖树,确认JUnit Jupiter版本是否为5.9.0及以上:
./gradlew dependencies --configuration testImplementation
在输出中定位org.junit.jupiter:junit-jupiter-api,确认版本号与Spring Boot 3.2.1绑定的版本一致(应为5.10.1)。
内容的提问来源于stack exchange,提问作者robert trudel
相关产品推荐
相关产品推荐

