# 写在前面
从去年开始,就没静下心来去写点东西了。今天来叨叨一下单元测试。
这篇文章,算我是心血来潮想重新开始写点什么的开始。虽然不知道下篇会说些什么,那就直接进入正题吧。
JUnit.
写 Java 的同学对这个 JUnit 肯定是熟悉的。嗯,大概也就是熟悉 @Test
.
本着务实的态度,作为 JUnit 的第一篇文章,先不说 JUnit 的辉煌历史。兵出奇招,直接看 JUnit 5.
# JUnit 5
JUnit 5 不是 JUnit 5.x 版本。JUnit 5 其实是 Junit 的一个代号,可以理解为 JUnit 的第 5 代。
JUnit 5 有三个组件 JUnit Platform
, JUnit Jupiter
, JUnit vintage
.
本篇重点: JUnit Jupiter.
# JUnit Jupiter
截止今日 (2024 年 8 月 6 日), JUnit Jupiter 最新版本 5.10.3. 所以
1 | <dependency> |
# 最佳食用姿势
# @Test
1 |
|
输出内容是
1 | org.opentest4j.AssertionFailedError: |
# @BeforeAll
使用 @BeforeAll 可以在单元测试前初始化部分信息。
@BeforeAll 只能使用在静态方法上,被注解的方法会在测试开始前运行一次。
1 | public static int num1 = 0; |
# @BeforeEach
在每个用例执行前执行一次。
1 |
|
输出结果
1 | 执行case: |
# @AfterAll
@AfterAll 注解只能使用在静态方法上,被注解的方法会在所有单元测试运行完毕后运行一次。
# @AfterEach
使用 @AfterEach 注解的方法,会在每一个 @Test 注解的方法运行结束前运行一次。
# @Disabled
被 @Disabled 注解的方法不在参与测试。
# @DisplayName
使用 @DisplayName 注解可以自定义测试方法的显示名称,下面为两个测试方法自定义名称。
# @Order
在类上增加注解 @TestMethodOrder ,然后在方法上使用 @Order 指定顺序,数字越小优先级越搞,可以保证测试方法运行顺序。
# 断言
Assertions.assertNotNull(xx)
: 检测不为空Assertions.assertEquals(expect, actual)
: 判断是否相等Assertions.assertNotEquals(expect, actual)
: 判断是否不相等.Assertions.assertTrue(boolean)
: 判断是否正确Assertions.assertFalse(boolean)
: 判断是否错误.
好啦,今天就到这里吧。知道这几个注解就能应对你工作中 30% 的问题,超过 90% 的 java 程序员啦。
因为有 91% 的 java 程序员都不写单元测试。虽然他们都知道如何写,就像写这篇文章的人.
对了, 那 1% 就是不写单元测试,也不会有 bug 的人。
# 最后
希望和你一起遇见更好的自己