天天看点

Spring Boot 集成 JUnit5,优雅单元测试!

为什么使用JUnit5

JUnit4被广泛使用,但是许多场景下使用起来语法较为繁琐,JUnit5中支持lambda表达式,语法简单且代码不冗余。

JUnit5易扩展,包容性强,可以接入其他的测试引擎。

功能更强大提供了新的断言机制、参数化测试、重复性测试等新功能。

ps:开发人员为什么还要测试,单测写这么规范有必要吗?其实单测是开发人员必备技能,只不过很多开发人员开发任务太重导致调试完就不管了,没有系统化得单元测试,单元测试在系统重构时能发挥巨大的作用,可以在重构后快速测试新的接口是否与重构前有出入。

简介

Spring Boot 集成 JUnit5,优雅单元测试!

如图,JUnit5结构如下:

JUnit Platform: 这是Junit提供的平台功能模块,通过它,其它的测试引擎都可以接入Junit实现接口和执行。

JUnit JUpiter:这是JUnit5的核心,是一个基于JUnit Platform的引擎实现,它包含许多丰富的新特性来使得自动化测试更加方便和强大。

JUnit Vintage:这个模块是兼容JUnit3、JUnit4版本的测试引擎,使得旧版本的自动化测试也可以在JUnit5下正常运行。

依赖引入

我们以SpringBoot2.3.1为例,引入如下依赖,防止使用旧的junit4相关接口我们将其依赖排除。

Spring Boot 集成 JUnit5,优雅单元测试!

常用注解

@BeforeEach:在每个单元测试方法执行前都执行一遍

@BeforeAll:在每个单元测试方法执行前执行一遍(只执行一次)

@DisplayName("商品入库测试"):用于指定单元测试的名称

@Disabled:当前单元测试置为无效,即单元测试时跳过该测试

@RepeatedTest(n):重复性测试,即执行n次

@ParameterizedTest:参数化测试,

@ValueSource(ints = {1, 2, 3}):参数化测试提供数据

断言

JUnit Jupiter提供了强大的断言方法用以验证结果,在使用时需要借助java8的新特性lambda表达式,均是来自org.junit.jupiter.api.Assertions包的static方法。

Spring Boot 集成 JUnit5,优雅单元测试!
Spring Boot 集成 JUnit5,优雅单元测试!
Spring Boot 集成 JUnit5,优雅单元测试!

近期热文推荐:

1.Java 15 正式发布, 14 个新特性,刷新你的认知!!

2.终于靠开源项目弄到 IntelliJ IDEA 激活码了,真香!

3.我用 Java 8 写了一段逻辑,同事直呼看不懂,你试试看。。

4.吊打 Tomcat ,Undertow 性能很炸!!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!

Spring Boot 集成 JUnit5,优雅单元测试!