必须同时配置testImplementation和testRuntimeOnly(或直接用junit-jupiter聚合包),并启用useJUnitPlatform();仅配API注解不报红但“No tests found”,仅配Engine则@Test无法导入,缺一不可。

testImplementation 和 testRuntimeOnly 必须同时配齐
只加 junit-jupiter-api,@Test 能识别、IDE 不报红,但右键 Run 会提示 “No tests found” 或直接跳过;只加 junit-jupiter-engine 则连注解都导入不了。JUnit 5 的运行依赖两块:API(编译期用)+ Engine(运行期用),缺一不可。
-
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.13.2'—— 提供@Test、@BeforeEach、Assertions等 -
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.13.2'—— 让 Gradle 知道用 Jupiter 引擎去执行这些测试 - 推荐直接用聚合包:
testImplementation 'org.junit.jupiter:junit-jupiter:5.13.2',它自动包含 API + Engine + Params,省得漏配
build.gradle 里必须声明 useJUnitPlatform()
Gradle 默认不启用 JUnit Platform,即使依赖全了,./gradlew test 也会静默跳过所有 @Test 方法。这个配置是启动开关,不是可选项。
- 在
build.gradle里加这段:
test {
useJUnitPlatform()
}
includeEngines("junit-jupiter", "junit-vintage")
test 闭包内,写在 dependencies 下或顶层会无效常见报错对应的真实原因
很多“跑不起来”的问题其实和依赖无关,而是构建或 IDE 层级的干扰。
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
-
NoClassDefFoundError: org/junit/jupiter/api/Test→ 通常是 Maven 残留了junit:junit:4.13.2,类加载器优先加载了旧版Test类,导致 Jupiter 的注解被忽略 -
Test class could not be found→ IntelliJ 没勾选 “Delegate to Gradle”,IDE 自己用内置 ClassLoader 扫描,绕过了你配的junit-jupiter -
No tests found for given includes→ 测试类没放对位置(必须是src/test/java)、类名不是 public、方法不是 public void、或者用了非标准后缀(如MyTestSuite而非MyTest)
IntelliJ 中测试类右键无 Run 选项
这基本不是 Gradle 配置问题,而是 IDE 的两个隐藏状态没调对。
立即学习“Java免费学习笔记(深入)”;
- 检查 Project SDK 是否 ≥ Java 8(JUnit 5 最低要求)
- 进 Settings > Build, Execution, Deployment > Build Tools > Gradle,确认勾选了 Delegate IDE build/run actions to Gradle
- 再进 Settings > Tools > Java EE > JUnit,确保 JUnit 5 test runner 已启用(老版本叫 “Use alternative JUnit runner”)
- 改完别忘了 Reload project(右键 Gradle panel → Reload project)
./gradlew test 在终端里跑通了,IDE 仍可能按自己那套逻辑找测试类——所以每次改完依赖或 useJUnitPlatform(),务必 reload。

















