环境搭建:JDK安装、Gradle/Maven配置、添加JUnit5依赖、创建第一个测试类
做测试开发,最怕什么?环境没搭好,代码跑不起来。
我见过太多新手,跟着教程写了半天测试,结果一运行就是各种ClassNotFoundException。说白了,大部分问题都出在依赖冲突或JDK版本不对上。
这一章,咱们就把地基打牢。从JDK安装到第一个测试跑通,每一步我都会把实际项目中踩过的坑指出来。
JDK安装:别选太新的版本
JUnit 5 需要 Java 8 及以上。但我建议你至少用 Java 11。
为什么?我记得有次项目里用了Java 17,结果CI服务器上的旧版本Gradle不兼容,折腾了大半天。你想想看,稳定才是第一位的。
推荐版本:JDK 11 或 JDK 17(LTS版本)
安装检查:终端运行 java -version 确认
- 官网下载:https://adoptium.net/(别去Oracle找,这里更干净)
- 配置
JAVA_HOME环境变量 - 把
%JAVA_HOME%\bin加入PATH
小提示:我习惯同时装两个JDK,比如JDK11和JDK17,通过切换JAVA_HOME来测试不同版本下的测试行为。
构建工具:Gradle 还是 Maven?
其实无所谓,看团队习惯。我个人更偏爱Gradle——脚本简洁,增量编译快。
但如果你在维护老项目,大概率是Maven。两种我都会讲,你自己选。
| 特性 | Maven | Gradle |
|---|---|---|
| 配置文件 | pom.xml(XML) | build.gradle(Groovy/Kotlin) |
| 依赖管理 | 成熟,仓库丰富 | 更灵活,支持局部配置 |
| 构建速度 | 一般 | 增量编译+缓存,快很多 |
| 学习曲线 | 规则明确,易上手 | DSL灵活,稍微复杂 |
添加JUnit5依赖
不管是Maven还是Gradle,核心依赖都一样。JUnit5由三个子项目组成:JUnit Platform、JUnit Jupiter、JUnit Vintage。
- JUnit Jupiter:我们写测试用的新API(@Test, @BeforeEach等)
- JUnit Vintage:兼容JUnit4的老测试
- JUnit Platform:启动测试的引擎
实战中大多数情况只需加Jupiter一个就够了。但老项目迁移时别忘了加Vintage,不然你之前写的JUnit4测试全挂。
⚠ 曾经有同事在pom.xml里只配了junit-jupiter-api,结果@Test注解能解析但断言方法找不到。因为API和Engine必须配套。记住,直接用junit-jupiter这个聚合坐标最省事。
Maven(pom.xml)
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<junit.version>5.10.0</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!-- 如果想写参数化测试,再加这个 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
版本选择:我目前用的是5.10.0。到2025年最新的是5.11.x,建议去Maven中央仓库查一下最新的稳定版。
Gradle(build.gradle)
plugins {
id 'java'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'
// 参数化测试可选
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.10.0'
}
test {
useJUnitPlatform()
}
注意useJUnitPlatform()这一行。我刚开始用Gradle时忘了加,结果跑测试一直显示“No tests found”。嗯,这个坑很多人都会踩。
创建第一个测试类
环境配好了,来写个最简单的测试。
// 在 src/test/java 下创建文件 CalculatorTest.java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
@Test
void shouldAddTwoNumbers() {
// 假设我们有一个Calculator类
// Calculator calc = new Calculator();
// int result = calc.add(3, 5);
// assertEquals(8, result);
// 先写一个简单的断言看看环境通不通
assertEquals(2, 1 + 1);
}
}
运行这个测试。如果你用IDE,直接在方法上点绿色箭头。
如果看到绿色条,恭喜你,环境搭好了。
常见错误及解决
java.lang.NoClassDefFoundError: org/junit/platform/commons/...—— 依赖没下载全,重新刷新依赖TestEngine with ID 'junit-jupiter' failed to discover tests—— 没加junit-jupiter-engine,或者Gradle忘记写useJUnitPlatform()Java版本错误—— 检查JAVA_HOME和IDE的编译设置
快速验证法:建好测试类后,在src/test/java目录下右键运行。如果5秒内看到绿色条,说明一切正常。
我习惯在项目根目录放一个READY.md文件,记录本机JDK版本和构建工具版本,方便后续排查。
环境搭好了,接下来就可以安心写测试了。说实话,这个环节虽然枯燥,但基础越牢固,后面写回归测试的时候越顺畅。