欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

整合篇:零基础学习与使用Junit5

程序员文章站 2022-03-26 22:17:59
目录1、框架介绍2、引入依赖3、基本结构4、常用注解5、常用断言5.1、简单断言5.2、数组断言5.3、组合断言5.4、异常断言5.5、超时断言5.6、快速失败配套资料,免费下载链接:https://pan.baidu.com/s/1jA217UgqXpONi_fV-aOzqw提取码:bm2g复制这段内容后打开百度网盘手机App,操作更方便哦1、框架介绍Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库,作为最新版本的JUnit框架,JUnit5与之前版本的J...


配套资料,免费下载
链接:https://pan.baidu.com/s/1jA217UgqXpONi_fV-aOzqw
提取码:bm2g
复制这段内容后打开百度网盘手机App,操作更方便哦

1、框架介绍

Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库,作为最新版本的JUnit框架,JUnit5与之前版本的Junit框架有很大的不同。由三个不同子项目的几个不同模块组成。

整合篇:零基础学习与使用Junit5

  • JUnit Platform: Junit Platform是在JVM上启动测试框架的基础,不仅支持Junit自制的测试引擎,其他测试引擎也都可以接入。
  • JUnit Jupiter: Junit Jupiter提供了JUnit5的新的编程模型,是JUnit5新特性的核心。内部包含了一个测试引擎,用于在Junit Platform上运行。
  • JUnit Vintage: 由于JUint已经发展多年,为了照顾老的项目,JUnit Vintage提供了兼容JUnit4.x,Junit3.x的测试引擎。

注意:SpringBoot 2.4 以上版本移除了默认对 Vintage 的依赖。

2、引入依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-test</artifactId>
  <scope>test</scope>
</dependency>

3、基本结构

@SpringBootTest
class SpringBootApplicationTests {
    @Test
    void contextLoads() {

    }
    
    ...
}

4、常用注解

注解名称 注解作用 官网详解
@Test 表示方法是测试方法。
@DisplayName 表示为测试类或者测试方法设置展示名称。
@ParameterizedTest 表示方法是参数化测试。 点击访问
@RepeatedTest 表示方法是可重复测试。 点击访问
@Nested 表示带注释的类是一个非静态的嵌套测试类 点击访问
@BeforeEach 表示在每个单元测试之前执行。
@AfterEach 表示在每个单元测试之后执行
@BeforeAll 表示在所有单元测试之前执行。
@AfterAll 表示在所有单元测试之后执行。
@Tag 表示单元测试类别,类似于JUnit4中的@Categories。
@Disabled 表示测试类或测试方法不执行,类似于JUnit4中的@Ignore。
@Timeout 表示测试方法运行如果超过了指定时间将会返回错误。
@ExtendWith 为测试类或测试方法提供扩展类引用。

5、常用断言

断言(assertions)是测试方法中的核心部分,用来对测试需要满足的条件进行验证。

这些断言方法都是 org.junit.jupiter.api.Assertions 的静态方法,所有的测试运行结束以后会有一个详细的测试报告。

5.1、简单断言

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

方法 说明
assertEquals 判断两个对象或两个原始类型是否相等
assertNotEquals 判断两个对象或两个原始类型是否不相等
assertSame 判断两个对象引用是否指向同一个对象
assertNotSame 判断两个对象引用是否指向不同的对象
assertTrue 判断给定的布尔值是否为 true
assertFalse 判断给定的布尔值是否为 false
assertNull 判断给定的对象引用是否为 null
assertNotNull 判断给定的对象引用是否不为 null
@Test
@DisplayName("simple assertion")
public void simple() {
     assertEquals(3, 1 + 2, "simple math");
     assertNotEquals(3, 1 + 1);

     Object obj = new Object();
     assertSame(obj, obj);
     assertNotSame(new Object(), new Object());
    
     assertTrue(1 < 2);
     assertFalse(1 > 2);

     assertNull(null);
     assertNotNull(new Object());
}

5.2、数组断言

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

@Test
@DisplayName("array assertion")
public void array() {
     assertArrayEquals(new int[]{1, 2}, new int[] {1, 2});
}

5.3、组合断言

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

@Test
@DisplayName("group assertion")
public void all() {
     assertAll("Math",
            () -> assertEquals(2, 1 + 1),
            () -> assertTrue(1 > 0)
     );
}

5.4、异常断言

assertThrows 方法提供了一种想要测试方法的异常情况时的断言。

@Test
@DisplayName("exception assertion"")
public void exceptionTest() {
    ArithmeticException exception = assertThrows(
           //丢出断言异常
            ArithmeticException.class, () -> System.out.println(1 % 0)
    );
}

5.5、超时断言

assertTimeout() 方法为测试方法设置了超时时间。

@Test
@DisplayName("timeout assertion"")
public void timeoutTest() {
    //如果测试方法时间超过1s将会异常
    assertTimeout(Duration.ofMillis(1000), () -> Thread.sleep(500));
}

5.6、快速失败

fail 方法直接使得测试失败。

@Test
@DisplayName("fail")
public void shouldFail() {
     fail("This should fail");
}

本文地址:https://blog.csdn.net/qq_38490457/article/details/112601139

相关标签: Spring Boot 2