• springboot15:junit5的使用


    1.测试平台Junit

    • springboot新版使用junit
      • 只需要标注一个注解@SpringBootTest
      • 然后方法中标注@Test即可
    • 以前springboot的使用
      • 比较困难
    • 现在整合使用后
      • 只需要编写测试方法@Test
      • 写测试的逻辑,整个类具有spring的功能,比如事务(测试完成后会自动回滚),自动装配等

    2.测试常用注解

    • @DisplayName(测试名称)即会显示在控制台哪个测试方法
    • @BeforeEach每个测试方法之前运行的
      @BeforeAll 所有测试方法之前(直接类上运行,为静态方法)
    • @AfterEach 每个测试方法结束以后运行
      @AfterAll 所有测试方法之后(直接类上运行,为静态方法)
    • @DIsabled 直接类上运行时,此方法不执行
    • @TimeOut 声明此方法几毫秒后方法超时异常
    • @ExtendWith (复合注解)
    • @RepeatedTest(测试很多次)

    3.测试重要注解

    ①断言(assertions)

    • 可以判断哪个测试没有通过(会有详细的测试报告,哪些方法成功,哪些方法因为什么失败)
      在这里插入图片描述
    • 断言代码(前面断言失败,后面都不会断言)
    @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());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 组合断言
    @Test
    @DisplayName("assert all")
    public void all() {
     assertAll("Math",
        () -> assertEquals(2, 1 + 1),
        () -> assertTrue(1 > 0)
     );
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.其他

    ① assumptions(前置条件)

    • 不满足前置条件,而是终止执行,而不是抛出失败
    • 示例(前置条件是跳过,而断言是错误)
     @Test
     @DisplayName("simple")
     public void simpleAssume() {
        assumeTrue(Objects.equals(this.environment, "DEV"));
        assumeFalse(() -> Objects.equals(this.environment, "PROD"));
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    ②嵌套测试

    • 嵌套测试情况下 外层Test不能驱动内层的全部Test运行
    • 内层的可以驱动外层的

    ③参数化测试

    • 测试
    @ParameterizedTest
    @ValueSource(strings = {"one", "two", "three"})
    @DisplayName("参数化测试1")
    public void parameterizedTest1(String string) {
        System.out.println(string);
        Assertions.assertTrue(StringUtils.isNotBlank(string));
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    C++用finally函数实现当前函数运行结束自动执行一段代码
    Django部署深度学习项目-1
    【freeRTOS】操作系统之六-低功耗模式
    工地安全反光衣穿戴监测报警摄像机
    java-net-php-python-ssm担保系统项目管理系统计算机毕业设计程序
    代码随想录算法公开课!
    我的创作纪念日
    Mysql协议分析之slave注册实战(Java版)
    linux平台的无盘启动开发
    vscode java 报错一例
  • 原文地址:https://blog.csdn.net/qq_44724899/article/details/127907468