整合篇:零基础学习与使用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框架有很大的不同。由三个不同子项目的几个不同模块组成。
- 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