java测试环境需确保jdk、junit、mockito、gradle和ide版本一致且配置正确:先用java -version和which java确认jdk路径与版本,再在idea中同步project sdk;gradle需配置junit 5依赖并设sourcecompatibility;idea运行测试须选junit5 test kind;mockito mock静态方法需额外添加mockito-inline依赖。

Java测试环境不是装完JDK就完事,关键在于让JUnit、Mockito、构建工具和IDE能协同工作——否则写完测试跑不起来,比没写还耽误事。
确认JDK版本与java -version输出一致
很多“测试类找不到”或“UnsupportedClassVersionError”错误,根源是IDE用的JDK和终端里java -version显示的不一致。尤其Mac上通过Homebrew装了多个JDK,或Windows里PATH混了JDK8/JDK17,极易出问题。
- 在终端执行
which java和java -version,记下路径和版本 - 在IntelliJ IDEA中:File → Project Structure → Project → Project SDK,必须选中上面查到的那个路径
- Gradle项目还需检查
gradle.properties或build.gradle里的sourceCompatibility和targetCompatibility,例如:sourceCompatibility = JavaVersion.VERSION_17
用Gradle快速拉起JUnit 5基础支持
不用手动下载jar包,也不用折腾Maven中央仓库镜像——Gradle初始化脚本就能搞定最小可运行测试闭环。
- 新建空目录,执行
gradle init --type java-application - 编辑
build.gradle,确保包含以下依赖块(注意去掉junit-jupiter-engine的testRuntimeOnly行,它在新版本Gradle中已非必需):
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.2'
- 删掉默认生成的
AppTest,新建一个src/test/java/ExampleTest.java,内容为:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class ExampleTest {
@Test
void shouldPass() {
assertTrue(true);
}
}
- 运行
./gradlew test,看到BUILD SUCCESSFUL且有测试通过计数,说明环境通了
IDEA里跑测试失败?重点检查Run Configuration的Test Kind
常见现象:代码里右键Run 'ExampleTest'报ClassNotFoundException: org.junit.jupiter.api.Test,但./gradlew test却成功——这基本是IDEA没识别到JUnit5测试引擎。
立即学习“Java免费学习笔记(深入)”;
- 打开
Run → Edit Configurations… - 左侧选中你的测试配置,在右侧找到
Test kind下拉框,必须选JUnit5(不是JUnit4或Pattern) - 如果下拉框灰掉,点击左上角
+→JUnit,再手动指定Test class并确认Test kind是JUnit5 - 顺便检查
Use classpath of module是否指向了正确的模块(不是main模块,而是含test源码的模块)
Mockito要搭配mockito-inline才能mock静态方法
刚加mockito-core时发现Mockito.mockStatic()编译不过或运行时报MockitoException: Cannot mock/spy class ...,不是版本不对,而是缺了字节码增强支持。
- 在
build.gradle中把依赖改成:
testImplementation 'org.mockito:mockito-core:5.11.0' testImplementation 'org.mockito:mockito-inline:5.11.0'
-
mockito-inline会自动激活Byte Buddy代理机制,否则mockStatic、mockConstruction等API根本不可用 - 注意:Spring Boot 3.x项目若用了
spring-boot-starter-test,它默认带的是mockito-core,但不含inline,必须显式添加
真正卡住人的往往不是技术多难,而是JDK路径、Gradle配置、IDEA运行配置这三处的版本对不齐——哪怕只差一个小版本,@Test注解也可能被当成普通方法跳过。动手前先敲两行命令确认环境,省下的调试时间够写三组测试用例。










