JUnit5学习之一:基本操作

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

关于《JUnit5学习》系列

《JUnit5学习》系列旨在通过实战提升SpringBoot环境下的单元测试技能,一共八篇文章,链接如下:

基本操作

Assumptions类

Assertions类

按条件执行

标签(Tag)和自定义注解

参数化测试(Parameterized Tests)基础

参数化测试(Parameterized Tests)进阶

综合进阶(终篇)

本篇概览

本文是《JUnit5学习》系列的第一篇,通过实战学习在SpringBoot框架下JUnit5的基本功能,全篇章节如下:

JUnit5简介

SpringBoot对JUnit5的依赖

常用注解简介

5版本已废弃的注解介绍

进入实战环节,先介绍版本和环境信息

创建《JUnit5学习》系列源码的父工程

创建子工程,编码体验常用注解

关于JUnit5

JUnit是常用的java单元测试框架,5是当前最新版本,其整体架构如下(图片来自网络):

在这里插入图片描述


2. 从上图可见,整个JUnit5可以划分成三层:顶层框架(Framework)、中间的引擎(Engine),底层的平台(Platform);
3. 官方定义JUnit5由三部分组成:Platform、Jupiter、Vintage,功能如下;
4. Platform:位于架构的最底层,是JVM上执行单元测试的基础平台,还对接了各种IDE(例如IDEA、eclipse),并且还与引擎层对接,定义了引擎层对接的API;
5. Jupiter:位于引擎层,支持5版本的编程模型、扩展模型;
6. Vintage:位于引擎层,用于执行低版本的测试用例;

可见整个Junit Platform是开放的,通过引擎API各种测试框架都可以接入;

SpringBoot对JUnit5的依赖

这里使用SpringBoot版本为2.3.4.RELEASE,在项目的pom.xml中依赖JUnit5的方法如下:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency>

如下图红框,可见JUnit5的jar都被spring-boot-starter-test间接依赖进来了:

在这里插入图片描述

曾经的RunWith注解

在使用JUnit4的时候,咱们经常这么写单元测试类:

@RunWith(SpringRunner.class) @SpringBootTest public class XXXTest {

对于上面的RunWith注解,JUnit5官方文档的说法如下图红框所示,已经被ExtendWith取代:

在这里插入图片描述


3. 咱们再来看看SpringBootTest注解,如下图,可见已经包含了ExtendWith:

在这里插入图片描述


4. 综上所述,SpringBoot+JUnit5时,RunWith注解已经不需要了,正常情况下仅SpringBootTest注解即可,如果对扩展性有更多需求,可以添加ExtendWith注解,如下图:

在这里插入图片描述

常用的JUnit5注解(SpringBoot环境)

注意,接下来提到的测试方法,是指当前class中所有被@Test、@RepeatedTest、@ParameterizedTest、@TestFactory修饰的方法;

ExtendWith:这是用来取代旧版本中的RunWith注解,不过在SpringBoot环境如果没有特别要求无需额外配置,因为SpringBootTest中已经有了;

Test:被该注解修饰的就是测试方法;

BeforeAll:被该注解修饰的必须是静态方法,会在所有测试方法之前执行,会被子类继承,取代低版本的BeforeClass;

AfterAll:被该注解修饰的必须是静态方法,会在所有测试方法执行之后才被执行,会被子类继承,取代低版本的AfterClass;

BeforeEach:被该注解修饰的方法会在每个测试方法执行前被执行一次,会被子类继承,取代低版本的Before;

AfterEach:被该注解修饰的方法会在每个测试方法执行后被执行一次,会被子类继承,取代低版本的Before;

DisplayName:测试方法的展现名称,在测试框架中展示,支持emoji;

Timeout:超时时长,被修饰的方法如果超时则会导致测试不通过;

Disabled:不执行的测试方法;

5版本已废弃的注解

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssyyf.html