JUnit 5 测试需添加 junit-jupiter 依赖(含 API、Engine、Params),测试类置于 src/test/java 下、以 Test 结尾,方法用 @Test 标记、void 返回、无参、非 static;配合 Assertions 断言和 @BeforeEach/@AfterEach 等生命周期注解提升可维护性。

添加 JUnit 5 依赖
测试方法能被识别和执行,前提是项目已正确引入 JUnit 5 运行环境。Maven 项目需在 pom.xml 的 <dependencies></dependencies> 中添加:
<dependency></dependency><groupid>org.junit.jupiter</groupid><artifactid>junit-jupiter</artifactid>-
<version>5.11.0</version>(推荐使用当前最新稳定版) <scope>test</scope>
这个 junit-jupiter 是 BOM 式聚合依赖,自动包含 junit-jupiter-api(编写用)、junit-jupiter-engine(运行用)和 junit-jupiter-params(参数化测试用),避免版本不一致导致 NoClassDefFoundError。
定义测试类与测试方法
测试类建议放在 src/test/java 下,命名以 Test 结尾(如 CalculatorTest),无需继承、无需 public 修饰、无需构造函数。
每个测试方法需满足:
立即学习“Java免费学习笔记(深入)”;
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
- 用
@Test注解标记 - 返回类型为
void - 无参数
- 非
static
例如:
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
class CalculatorTest {
@Test
void testAddition() {
Calculator calc = new Calculator();
assertEquals(7, calc.add(3, 4), "3 + 4 应该等于 7");
}
}
使用断言验证逻辑
通过静态导入 Assertions.*,调用语义清晰的断言方法检查结果:
-
assertEquals(expected, actual):比较值相等,支持带消息的重载 -
assertTrue(condition)或assertFalse(condition):验证布尔表达式 -
assertNull(obj)/assertNotNull(obj):检查空状态 -
assertThrows(ExceptionType.class, () -> {...}):验证是否抛出指定异常 -
assertAll(() -> ..., () -> ...):批量执行多个断言,全部失败才汇总报错
注意:每条断言对应一个独立校验点,不要在一个测试方法里混合验证多个不相关的逻辑。
组织测试结构与生命周期
JUnit 5 提供注解控制执行顺序和作用域:
-
@BeforeEach:每个测试方法前执行(适合初始化对象) -
@AfterEach:每个测试方法后执行(适合清理资源) -
@BeforeAll:整个测试类首次运行前执行(方法必须是static) -
@AfterAll:所有测试方法执行完毕后执行(方法必须是static) -
@DisplayName("中文描述"):让测试报告更易读
这些注解帮助你写出可维护、可复现、职责分明的测试代码,而不是靠手动写 main 方法或 print 输出来“看结果”。

















