解决 IntelliJ 运行 JUnit 时的 NoSuchMethodError 异常
最近有同学在初始化 Spring Boot 项目时遇到了一个典型的依赖冲突问题。控制台抛出了 java.lang.NoSuchMethodError,堆栈信息指向了 org.junit.platform.engine.discovery.MethodSelector.getMethodParameterTypes() 方法缺失。
这其实是个老生常谈的问题:JUnit 平台库的版本与当前运行的环境不匹配。当你使用较新的 JUnit 5 特性,但底层依赖(比如 Spring Boot 管理的版本)还停留在旧版时,JVM 就会在运行时找不到对应的方法签名。
对于 Spring Boot 项目来说,最稳妥的办法是锁定父工程的版本号,让 Spring Boot 帮你统一管理依赖。建议将 spring-boot-starter-parent 的版本调整到 2.7.17,这个版本对 JUnit 5 的支持比较稳定。
修改 pom.xml 配置如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.17</version>
<relativePath/>
</parent>
保存后记得刷新 Maven 依赖。如果问题依旧,可以运行 mvn dependency:tree 检查一下实际引入的 JUnit 版本是否一致。通常情况下,同步好父版本就能搞定大部分此类报错。

