2、JUnit5常用注解

JUnit5的注解与JUnit4的注解有所变化

JUnit 5 User Guide

  • @Test :表示方法是测试方法。但是与JUnit4的@Test不同,他的职责非常单一不能声明任何属性,拓展的测试将会由Jupiter提供额外测试
  • @ParameterizedTest :表示方法是参数化测试,下方会有详细介绍
  • @RepeatedTest :表示方法可重复执行,下方会有详细介绍
  • @DisplayName :为测试类或者测试方法设置展示名称
  • @BeforeEach :表示在每个单元测试之前执行
  • @AfterEach :表示在每个单元测试之后执行
  • @BeforeAll :表示在所有单元测试之前执行
  • @AfterAll :表示在所有单元测试之后执行
  • @Tag :表示单元测试类别,类似于JUnit4中的@Categories
  • @Disabled :表示测试类或测试方法不执行,类似于JUnit4中的@Ignore
  • @Timeout :表示测试方法运行如果超过了指定时间将会返回错误
  • @ExtendWith :为测试类或测试方法提供扩展类引用
import org.junit.jupiter.api.Test; //注意这里使用的是jupiter的Test注解!!
public class TestDemo {@Test@DisplayName("第一次测试")public void firstTest() {System.out.println("hello world");}

3、断言(assertions)

断言(assertions)是测试方法中的核心部分,用来对测试需要满足的条件进行验证。这些断言方法都是 org.junit.jupiter.api.Assertions 的静态方法。JUnit 5 内置的断言可以分成如下几个类别:

检查业务逻辑返回的数据是否合理。

所有的测试运行结束以后,会有一个详细的测试报告;

3.1、简单断言

用来对单个值进行简单的验证。如:

方法

说明

assertEquals

判断两个对象或两个原始类型是否相等

assertNotEquals

判断两个对象或两个原始类型是否不相等

assertSame

判断两个对象引用是否指向同一个对象

assertNotSame

判断两个对象引用是否指向不同的对象

assertTrue

判断给定的布尔值是否为 true

assertFalse

判断给定的布尔值是否为 false

assertNull

判断给定的对象引用是否为 null

assertNotNull

判断给定的对象引用是否不为 null

@Test
@DisplayName("simple assertion")
public void simple() {assertEquals(3, 1 + 2, "simple math");assertNotEquals(3, 1 + 1);assertNotSame(new Object(), new Object());Object obj = new Object();assertSame(obj, obj);assertFalse(1 > 2);assertTrue(1 < 2);assertNull(null);assertNotNull(new Object());
}

3.2、数组断言

通过 assertArrayEquals 方法来判断两个对象或原始类型的数组是否相等

@Test
@DisplayName("array assertion")
public void array() {assertArrayEquals(new int[]{1, 2}, new int[] {1, 2});
}

3.3、组合断言

assertAll 方法接受多个 org.junit.jupiter.api.Executable 函数式接口的实例作为要验证的断言,可以通过 lambda 表达式很容易的提供这些断言

@Test

@DisplayName("assert all")
public void all() {assertAll("Math",() -> assertEquals(2, 1 + 1),() -> assertTrue(1 > 0));
}

3.4、异常断言

在JUnit4时期,想要测试方法的异常情况时,需要用@Rule注解的ExpectedException变量还是比较麻烦的。而JUnit5提供了一种新的断言方式Assertions.assertThrows() ,配合函数式编程就可以进行使用。

@Test
@DisplayName("异常测试")
public void exceptionTest() {ArithmeticException exception = Assertions.assertThrows(//扔出断言异常ArithmeticException.class, () -> System.out.println(1 % 0));
}

3.5、超时断言

Junit5还提供了Assertions.assertTimeout() 为测试方法设置了超时时间

@Test
@DisplayName("超时测试")
public void timeoutTest() {//如果测试方法时间超过1s将会异常Assertions.assertTimeout(Duration.ofMillis(1000), () -> Thread.sleep(500));
}

3.6、快速失败

通过 fail 方法直接使得测试失败

@Test
@DisplayName("fail")
public void shouldFail() {fail("This should fail");
}

七、springboot 单元测试阶段 (2、JUnit5常用注解,3、断言(assertions) )相关推荐

  1. 七、springboot 单元测试阶段 (1.JUnit5 的变化 )

    1.JUnit5 的变化 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库 作为最新版本的JUnit框架,JUnit5与之前版本的Junit框架有很大的不同.由三个 ...

  2. springboot 集成 Swagger2 配置以及常用注解的说明和使用 ( 超详细)

    一.注解的使用 和 说明 结构化说明如下: @Api:用在请求的类上,表示对类的说明      tags="说明该类的作用,可以在UI界面上看到的注解"    (也就是给类取别名) ...

  3. SpringBoot | 第六章:常用注解介绍及简单使用

    前言 之前几个章节,大部分都是算介绍springboot的一些外围配置,比如日志 配置等.这章节开始,开始总结一些关于springboot的综合开发的知识点.由于SpringBoot本身是基于Spri ...

  4. 七、springboot 单元测试阶段 (4、前置条件(assumptions)5、嵌套测试 6、参数化测试 7、迁移指南)

    目录 4.前置条件(assumptions) 5.嵌套测试 6.参数化测试 7.迁移指南 4.前置条件(assumptions) JUnit 5 中的前置条件(assumptions[假设])类似于断 ...

  5. SpringBoot Cloud必须掌握的常用注解

    使用注解的优势: 1.采用纯java代码,不在需要配置繁杂的xml文件2.在配置中也可享受面向对象带来的好处3.类型安全对重构可以提供良好的支持4.减少复杂配置文件的同时亦能享受到springIoC容 ...

  6. SpringBoot指南(二)——常用注解及操作

    文章目录 1 Spring 1.1 @SpringBootApplication 1.2 @Configuration 1.3 @Component.@Controller.@Service.@Rep ...

  7. 【Mybatisplus】创建Spring Boot工程实现用户自定义功能Service接口和常用注解总结

    目录 1.测试自定义功能 2.通用Service 创建Service接口和实现类 测试查询数据库中有多少条记录 测试批量添加操作(通过单个批量增加循环实现) 3.常用注解(@TableName) 解决 ...

  8. SpringBoot教程(13) JUnit5详解 常用注解 BeforeEach BeforeAll ParameterizedTest RepeatedTest

    JUnit5详解 常用注解 BeforeEach BeforeAll ParameterizedTest RepeatedTest 一.前言 1. 引入test包 二.注解 三.测试案例 1. @Be ...

  9. 【SpringBoot】SpringBoot常用注解

    一.前言 首先这里说的SpringBoot常用注解是指在我们开发项目过程中,我们经常使用的注解,包含Spring.SpringBoot.SpringCloud.SpringMVC等这些框架中的注解,而 ...

最新文章

  1. 关于python中的作用域问题
  2. 【轉】Android编程之SparseArrayE详解
  3. 一次“ora-12170 tns 连接超时”的经历
  4. Cocos2D-Android-1之源码详解:2.ActionManagerTest
  5. linux 安全相关
  6. css过渡transition
  7. android服务的原理,Android学习笔记:IntentService
  8. Mantis安装过程笔记
  9. linux下的/dev/shm/ 以及与swap目录的区别
  10. 使用libhybris库linux调用android库
  11. [转]el-table表格翻页后仍记忆所选项
  12. C++:stack.pop() error: cannot initialize a variable of type ‘char‘ with an rvalue of type ‘void‘
  13. 灰色系统理论与灰色关联分析模型
  14. 微信公众号原主体已注销 如何办理账号迁移?
  15. 【Books系列】2022年:《拼职场》读书笔记
  16. 计算机台式硬件排名价格,台式机电脑主板排名
  17. 今天将网易博客的内容迁过来
  18. 《运营力——微信公众号 设计 策划 客服 管理 一册通》一一1.1 创博公众号团队简介...
  19. 鹿鼎记 / Royal Tramp (1992)
  20. 高级前端成长训练营|和阿龙一起学前端曝光——走进前端开发世界

热门文章

  1. 数据库实体关系图(ERD)及其画法
  2. 心识宇宙实习面经(一面二面三面)(寄)
  3. 细数在阿里巴巴工作的N种幸福
  4. python调阿里OCR_增值税发票,定额发票,混贴发票,表格_识别,处理数据写入excel
  5. php在登录界面显示悬浮窗口,梨花带雨网页悬浮音乐播放器V3开源
  6. SAP BDC使用CO01创建生产订单报错
  7. 陈越《数据结构》第三讲 树(上)
  8. Spring--整合Junit
  9. 小程序基础库的更新迭代
  10. Google眼镜 失败的传感器开发