JUnit测试核心是编写public void无参且带@Test的方法,明确输入输出及边界行为,用assertEquals等断言验证逻辑,并通过@BeforeEach确保测试隔离。

用 JUnit 验证方法逻辑,核心是写一个独立、可重复、有明确断言的测试方法,让它的执行结果能客观反映被测方法是否按预期工作。
明确被测方法的行为边界
先搞清楚你要验证什么:输入是什么?正常输出该是什么?异常情况下该抛什么错?有没有边界值(比如空字符串、负数、null)?比如一个 divide(int a, int b) 方法,至少要覆盖:
- 正数相除,结果正确
- 除零时抛出
ArithmeticException - 被除数为 0 的合法情况(如
0 / 5)
编写标准测试方法
测试方法需满足三个基本条件:public、void、无参数。加上 @Test 注解后,JUnit 才会识别并运行它。例如:
@Test
void testDivide_NormalCase() {
int result = Calculator.divide(10, 2);
assertEquals(5, result); // 断言结果等于预期
}
注意不要在测试里写 System.out.println 或修改共享状态——每个测试必须彼此隔离。
立即学习“Java免费学习笔记(深入)”;
用断言确认逻辑是否成立
断言是验证逻辑的“判决书”。常用方法包括:
-
assertEquals(expected, actual):验证两个值相等(对对象会调用equals()) -
assertTrue(condition)或assertFalse(condition):验证布尔表达式 -
assertNull(object)或assertNotNull(object):验证对象是否为空 -
assertThrows(ExcType.class, () -> {...}):验证某段代码确实抛出了指定异常
比如验证除零异常:
@Test
void testDivide_ByZero() {
assertThrows(ArithmeticException.class, () -> Calculator.divide(10, 0));
}
借助生命周期注解准备和清理环境
如果多个测试共用同一类实例或资源,可用 @BeforeEach 统一初始化,避免重复代码:
private Calculator calculator;
@BeforeEach
void setUp() {
calculator = new Calculator(); // 每个测试前都新建干净实例
}
这样每次测试都在干净状态下运行,不会互相干扰。


















