问题描述
在使用 IntelliJ IDEA 运行 Spring Boot 项目的 JUnit 测试时,偶尔会遇到 NoSuchMethodError 异常。控制台会打印出类似这样的堆栈信息:
Exception in thread "main" java.lang.NoSuchMethodError: 'java.lang.String org.junit.platform.engine.discovery.MethodSelector.getMethodParameterTypes()'
这种报错的本质是运行时环境加载了不匹配的类版本。JVM 试图调用 org.junit.platform.engine.discovery.MethodSelector 中的 getMethodParameterTypes() 方法,但当前 classpath 下的库版本里并没有这个方法。这往往是由于 Spring Boot 依赖管理版本过旧,导致传递下来的 JUnit 平台组件版本不一致造成的。
修复步骤
不需要引入额外的复杂配置,只需统一父工程的版本即可。打开项目的 pom.xml 文件,找到 spring-boot-starter-parent 声明,将其版本号调整为与当前 JUnit 版本兼容的稳定版。
例如,将版本锁定为 2.7.17:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.17</version>
<relativePath/>
</parent>
保存后刷新 Maven 依赖,IDEA 会自动重新解析。通常情况下,重新构建项目后测试就能正常运行。如果仍有问题,建议检查是否有手动排除或强制指定了冲突的 JUnit 依赖。

