• 21-SpringBoot JUnit5单元测试-断言机制


    断言Assertion是测试方法中的核心部分,用来对测试需要满足的条件进行验证。这些断言方法都是org.junit.jupiter.api.Assertions的静态方法。检查业务逻辑返回的数据是否合理。所有的测试运行结束以后,会有一个详细的测试报告。

    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.*;
    
    
    @SpringBootTest
    public 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);
        }
    
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    断言判断为假, 程序抛出异常后立即终止运行, 余下的代码都不会被执行.
    在这里插入图片描述

    2.数组断言

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

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

    在这里插入图片描述

    3.组合断言

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

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

    在这里插入图片描述
    注意看, 第二个断言为假,仍然会执行第三个断言, 也就是说assertAll()方法b内填写的断言都会被执行判断

    4.异常断言

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

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

    在这里插入图片描述

    5.超时断言

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

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

    在这里插入图片描述

    6.快速失败

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

        @Test
        public void shouldFail() {
            System.out.println("123456");
            fail("This should fail");
            System.out.println("888888");
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

  • 相关阅读:
    想要精通算法和SQL的成长之路 - 连续的子数组和
    C++list模拟实现
    Linux下Couchbase的安装&升级&维护最佳指南
    使用aggregation API扩展你的kubernetes API
    Win10系统无法登录Xbox live的四种解决方法
    Linux内核——环境搭建
    JSP ssm 零配件管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
    16.Composition API(二) (watchEffect和watch的使用)
    小白入门——Python标准库和第三方库简介
    Spring Cloud【SkyWalking日志、SkyWalking告警 、Skywalking自定义告警规则】(十五)
  • 原文地址:https://blog.csdn.net/qq_41865229/article/details/125433197