0


SpringBoot--->>>单元测试-->>断言 assertions

3、断言(assertions)

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

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

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

1、简单断言

用来对单个值进行简单的验证。如:
方法说明assertEquals判断两个对象或两个原始类型是否相等assertNotEquals判断两个对象或两个原始类型是否不相等assertSame判断两个对象引用是否指向同一个对象assertNotSame判断两个对象引用是否指向不同的对象assertTrue判断给定的布尔值是否为 trueassertFalse判断给定的布尔值是否为 falseassertNull判断给定的对象引用是否为 nullassertNotNull判断给定的对象引用是否不为 null
测试类中

这些断言方法都是 org.junit.jupiter.api.Assertions 的静态方法

intadd(int i,int j){return i+j;}@TestvoidtestAssertions(){int result =add(1,2);//第一个参数是期望值,后一个值是实际需要判断的结果。在后面是设置的如果不满足断言报错的内容
    Assertions.assertEquals(3,result,"这两个值不相同");
    Assertions.assertNotEquals(4,result,"这两个值一样");
    Assertions.assertSame(3,result);
    Assertions.assertNotSame(32,result);//断言实际值
    Assertions.assertNull(null);
    Assertions.assertNotNull(result);//断言实际值操作
    Assertions.assertTrue(result >0);
    Assertions.assertFalse(result ==4);}
2、数组断言

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

配置类中

也可以设置异常报文,第一个参数是期望值,第二个参数是实际值

@Test@DisplayName("数组断言测试")voidtestArrayAssertions(){
    Assertions.assertArrayEquals(newint[]{1,2},newint[]{1,2},"元素不一样");}

如果出错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tIw5h70i-1646914968617)(D:\writeTest\Test\images\image-20220304180127862.png)]

3、组合断言

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

能设置异常报文

@Test@DisplayName("组合断言支持使用 lambda 表达式")voidtestAssertAll(){
    Assertions.assertAll("组合判断",()-> Assertions.assertEquals(3,3),()-> Assertions.assertTrue(true&&false));}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ljFUs6Tq-1646914968618)(D:\writeTest\Test\images\image-20220304181756937.png)]

4、异常断言

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

@Test@DisplayName("异常断言")voidtestException(){
    Assertions.assertThrows(ArithmeticException.class,()-> System.out.println(10/0));}

不满足断言机制

**org.opentest4j.AssertionFailedError: Expected java.lang.ArithmeticException to be thrown, but nothing was thrown.**
5、超时断言

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

测试类中

@Test@DisplayName("超时断言 lambda 表达式")voidtestTimeout(){
    Assertions.assertTimeout(Duration.ofMillis(1000),()-> Thread.sleep(500));}

一番体验下来,断言机制就是你调用的方法断言了什么,结果就得是什么,否则就报错说你这个跟要求不一样。如果一个断言出现了异常,后面的都不执行了

6、快速失败

使用 fail 可以使得方法直接失败,然后就抛异常终止后面的断言

@Test@DisplayName("assert fail 快速失败")voidtestFail(){
    Assertions.fail("需要失败");
    System.out.println("正常执行");}

本文转载自: https://blog.csdn.net/m0_55668855/article/details/123410425
版权归原作者 妙Lin 所有, 如有侵权,请联系我们删除。

“SpringBoot--->>>单元测试-->>断言 assertions”的评论:

还没有评论