SpringBoot断言机制的原理是什么

JUnit 5 内置的断言可以分成如下几个类别:

1.简单断言

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

方法 说明
assertEquals 判断两个对象或两个原始类型是否相等
assertNotEquals 判断两个对象或两个原始类型是否不相等
assertSame 判断两个对象引用是否指向同一个对象
assertNotSame 判断两个对象引用是否指向不同的对象
assertTrue 判断给定的布尔值是否为 true
assertFalse 判断给定的布尔值是否为 false
assertNull 判断给定的对象引用是否为 null
assertNotNull 判断给定的对象引用是否不为 null

JTest5

package com.limi.springboottest2;import org.junit.jupiter.api.*;import org.springframework.boot.test.context.SpringBootTest;import static org.junit.jupiter.api.Assertions.*;@SpringBootTestpublic class JTest5 {    @Test    public void simple() {        assertEquals(3, 1 + 2, "simple math");        System.out.println(1);        assertNotEquals(3, 1 + 1);        System.out.println(2);        assertNotSame(new Object(), new Object());        System.out.println(3);        Object obj = new Object();        assertSame(obj, obj);        System.out.println(4);        assertFalse(3 > 2);        System.out.println(5);        assertTrue(1 < 2);        System.out.println(6);        assertNull(null);        System.out.println(7);        assertNotNull(new Object());        System.out.println(8);    }}

断言判断为假, 程序抛出异常后立即终止运行, 余下的代码都不会被执行.

SpringBoot断言机制的原理是什么

2.数组断言

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

	//不相等抛出异常    @Test    public void array() {        assertArrayEquals(new int[]{1, 2}, new int[] {1, 2, 3});    }

SpringBoot断言机制的原理是什么

3.组合断言

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

	//除非填写的断言都为真, 否则抛出异常    @Test    public void all() {        assertAll("Math",                () -> assertEquals(2, 1 + 1),                () -> assertTrue(1 > 5),                () -> assertNotNull(null)        );    }

SpringBoot断言机制的原理是什么

注意看, 第二个断言为假,仍然会执行第三个断言, 也就是说assertAll()方法b内填写的断言都会被执行判断

4.异常断言

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

    @Test    public void exceptionTest() {        ArithmeticException exception = Assertions.assertThrows(                //当没有异常时, 扔出断言异常                ArithmeticException.class, () -> System.out.println(5/ 2));    }

SpringBoot断言机制的原理是什么

5.超时断言

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

    @Test@DisplayName("超时测试")public void timeoutTest() {        //如果测试方法执行时间超过设置的时间将会抛出异常            Assertions.assertTimeout(Duration.ofMillis(1000), () -> Thread.sleep(5000));    }

SpringBoot断言机制的原理是什么

6.快速失败

通过 fail 方法直接使得测试失败, 该断言后续代码不会执行

    @Test    public void shouldFail() {        System.out.println("123456");        fail("This should fail");        System.out.println("888888");    }

SpringBoot断言机制的原理是什么

关于“SpringBoot断言机制原理什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

文章标题:SpringBoot断言机制的原理是什么,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/25637

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年9月15日 下午11:37
下一篇 2022年9月15日 下午11:38

相关推荐

  • MySQL索引最左匹配原则是什么

    准备 为了方面后续的说明,我们首先建立一个如下的表(MySQL5.7),表中共有5个字段(a、b、c、d、e),其中a为主键,有一个由b,c,d组成的联合索引,存储引擎为InnoDB,插入三条测试数据。强烈建议自己在MySQL中尝试本文的所有语句。 CREATE TABLE `test` ( `a`…

    2022年9月8日
    4.4K00
  • mysql如何统计查询结果

    在mysql中,可以使用COUNT()函数来统计查询结果;该函数用于统计查询结果的行数,返回表中符合特定条件的记录行数。COUNT()函数有三种语法:1、“COUNT(*)”,返回总行数,包含NULL和非NULL值的行;2、“COUNT(字段名)”,返回不包含NULL值的行数,会忽略空值行;3、“C…

    2022年9月22日
    63300
  • Burpsuit结合SQLMapAPI产生的批量注入插件是怎样的

    1.1变动: 增加过滤设置 优化显示结果 增加运行提示信息 增加域名正则匹配 整个插件分为三个面板:任务面板、sqlmapapi参数配置面板、过滤条件面板。 任务面板 Server : SQLmapapi服务的IP和端口 THREAD:同时检测的任务数量 Domain:需要检测的域名,支持正则匹配 …

    2022年9月20日
    16800
  • Apache Solr velocity模板注入RCE漏洞的示例分析

    0x01简介 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。 0x02漏洞介绍 Solr中存在Velo…

    2022年9月13日
    28100
  • easyrecovery如何恢复U盘

    easyrecovery恢复U盘的方法 1、打开软件,找到你要恢复的文件类型,点击下一步。 2、选择你要恢复的硬盘。 3、手动查找需要恢复文件,这里有三种板块功能,可以都点开看看,找到你想要的那个文件。 4、等你找到你想要恢复的文件之后,点击恢复就可以了。 到此,相信大家对“easyrecovery…

    2022年9月26日
    11600
  • C语言内存分配函数被污染的示例分析

    1、被污染的内存分配 C 语言的内存分配函数包括 malloc()、 kmalloc 、 smalloc()、 xmalloc()、realloc()、 calloc()、 GlobalAlloc()、 HeapAlloc()等等,以 malloc()为例, malloc() 函数的原型为: ext…

    2022年9月20日
    17800
  • Web.config在渗透中的作用是什么

    前言  下面主要介绍web.config文件在渗透中的作用,即可上传一个web.config时的思路,话不多说,开始正题。首先我们来看一下web.config是什么,援引百度百科的介绍:  Web.config文件是一个XML文本文件,它用来储存ASP.NETWeb 应用程序的配置信息,它可以出现在…

    2022年9月24日
    18900
  • 使用Lombok @Builder注解导致默认值无效怎么解决

    @Builder注解导致默认值无效 使用Lombok注解可以极高的简化代码量,比较好用的注解除了@Data之外,还有@Builder这个注解,它可以让你很方便的使用builder模式构建对象,但是今天发现@Builder注解会把对象的默认值清掉。 像下面这段代码,会导致对象的name属性变为null…

    2022年8月29日
    1.0K00
  • windows office365头像不同步怎么解决

    office365头像不同步: 答:office365头像不同步可能是组件方面的问题建议先更新一下office组件解决。 也可能是网络的问题导致没有那么快的进行同步,可以换一个快一点的网络试试。 还有就是微软方面的问题了,没有立刻反馈并同步,只样就只可以去等待一下了。 office365头像更改教程…

    2022年9月21日
    54700
  • mysql数据库拉链表是什么

    拉链表产生背景 在数据仓库的数据模型设计过程中,经常会遇到这样的需求: 1、数据量比较大; 2、表中的部分字段会被update,如用户的地址,产品的描述信息,订单的状态等等; 3、需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态,比如,查看某一个用户在过去某…

    2022年9月24日
    28600
联系我们
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部