您好,欢迎访问一九零五行业门户网

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); }}
断言判断为假, 程序抛出异常后立即终止运行, 余下的代码都不会被执行.
2.数组断言通过 assertarrayequals 方法来判断两个对象或原始类型的数组是否相等。
//不相等抛出异常 @test public void array() { assertarrayequals(new int[]{1, 2}, new int[] {1, 2, 3}); }
3.组合断言assertall()方法接受多个 org.junit.jupiter.api.executable 函数式接口的实例作为要验证的断言,可以通过 lambda 表达式很容易的提供这些断言。
//除非填写的断言都为真, 否则抛出异常 @test public void all() { assertall("math", () -> assertequals(2, 1 + 1), () -> asserttrue(1 > 5), () -> assertnotnull(null) ); }
注意看, 第二个断言为假,仍然会执行第三个断言, 也就是说assertall()方法b内填写的断言都会被执行判断
4.异常断言在junit4时期,想要测试方法的异常情况时,需要用@rule注解的expectedexception变量还是比较麻烦的。而junit5提供了一种新的断言方式assertions.assertthrows(),配合函数式编程就可以进行使用。
@test public void exceptiontest() { arithmeticexception exception = assertions.assertthrows( //当没有异常时, 扔出断言异常 arithmeticexception.class, () -> system.out.println(5/ 2)); }
5.超时断言junit5还提供了assertions.asserttimeout()为测试方法设置了超时时间。
@test@displayname("超时测试")public void timeouttest() { //如果测试方法执行时间超过设置的时间将会抛出异常 assertions.asserttimeout(duration.ofmillis(1000), () -> thread.sleep(5000)); }
6.快速失败通过 fail 方法直接使得测试失败, 该断言后续代码不会执行
@test public void shouldfail() { system.out.println("123456"); fail("this should fail"); system.out.println("888888"); }
以上就是springboot断言机制的原理是什么的详细内容。
其它类似信息

推荐信息