IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Junit5注解说明 -> 正文阅读

[开发测试]Junit5注解说明

1.Junit5注解

Junit Jupiter支持以下注释,
用于配置测试和扩展测试框架。
除非另有说明,
所有的核心注释都位于junit-jupiter-api模块中的
org.junit.jupiter.api包中。

序号注解说明
1@Test表示方法是测试方法,与Junit4的@Test不同,不能声明任何属性,因为JUnit Jupiter中的测试扩展需要通过专用的注解。
2@ParameterizedTest表示方法是参数化测试
3@RepeatedTest表示方法是可以按照指定次数重复执行
4@TestFactory表示方法是动态测试的测试工厂。
5@TestTemplate表示方法是测试用例的模板,用于支持多次调用,调用的次数取决于调用上下文返回的注册提供者
6@TestClassOrder用于@Nested注解的测试类,可以配置测试类执行顺序
7@TestMethodOrder用于为测试类配置测试方法执行顺序;类似于Junit4的@FixMethodOrder。
8@TestInstance用于为测试类配置测试实例生命周期
9@DisplayName为测试类或测试方法声明自定义的展示名称
10@DisplayNameGeneration为测试类声明一个自定义的显示名称生成器
11@BeforeEach表示方法应该在当前类中每个 @Test, @RepeatedTest, @ParameterizedTest 或 @TestFactory 方法之前执行;类似于Junit4的@Before 。即在每个单元测试之前执行,如果测试类有n个测试方法,则被执行n次。
12@AfterEach表示方法应该在当前类中每个 @Test, @RepeatedTest, @ParameterizedTest 或 @TestFactory 方法之后执行;类似于Junit4的@After 。即在每个单元测试之后执行,如果测试类有n个测试方法,则被执行n次。
13@BeforeAll表示方法应该在当前类中的所有@Test,@RepeatedTest,@ParameterizedTest和@TestFactory方法之前执行;类似于Junit 4的@BeforeClass。这样的方法是必须是静态的,如果配合test instance lifecycle(per-class)使用,可以是非静态的。方法只会执行一次。
14@AfterAll表示方法应该在当前类中的所有@Test,@RepeatedTest,@ParameterizedTest和@TestFactory方法之前执行;类似于Junit 4的@AfterClass。这样的方法是必须是静态的,如果配合test instance lifecycle(per-class)使用,可以是非静态的。方法只会执行一次。
15@Nested表示测试类是非静态的嵌套测试类。@BeforeAll和@AfterAll方法不能直接在@Nested测试类中使用,除非配合test instance lifecycle(per-class)使用。
16@Tag用于在类或方法上声明用于过滤测试的标签;类似于TestNG中的测试组或Junit 4中的Categories。
17@Disabled用于禁用一个测试类或测试方法;类似于JUnit 4的' @Ignore '。即执行单元测试时,会忽略对应的测试类或者测试方法。
18@Timeout用于测试方法、测试工厂、测试模板或生命周期方法,在其执行超过指定时间时失败。
19@ExtendWith用于以声明方式注册扩展
20@RegisterExtension用于通过字段以编程方式注册扩展
21@TempDir用于在生命周期方法或测试方法中通过字段注入或参数注入临时目录;位于org.junit.jupiter.api.io包。

另外还有一些注释,
目前是实验性的,
感兴趣的请参考实验API中的表格。

2.参数源注解

参数化测试使用@ParameterizedTest注解代替@Test,
可以使用不同的参数多次运行同一个测试方法。
但是必须至少声明一个参数源,
然后在测试方法中使用这些参数。
配合@ParameterizedTest使用的参数源注解如下:

序号注解说明
1@ValueSource最简单的参数源。可以指定单个字面值数组,并且在参数化测试时提供单个参数。
2@NullSource为参数化测试方法提供一个空参数,不能用于具有基本类型的参数。
3@EmptySource为参数化测试方法提供一个空参数,用于以下类型的参数:java.lang.String, java.util.List, java.util.Set, java.util.Map, primitive arrays (比如 int[], char[][]等等), object arrays (比如String[], Integer[][]等等)。但是不支持这些类型的子类型。
4@NullAndEmptySource一个组合注释,结合了@NullSource和@EmptySource的功能。
5@EnumSource提供了一种使用枚举常量的方便方法。
6@MethodSource可以引用测试类或外部类的一个或多个工厂方法。
7@CsvSource可以用逗号分隔的值来表达参数列表(例如CSV字符串文字)。通过@CsvSource中的value属性提供的每个字符串表示一个CSV行,并导致对参数化测试的一次调用。
8@CsvFileSource使用类路径或本地文件系统中CSV文件(逗号分隔的)作为参数源,文件中的每一行都会导致对参数化测试的一次调用。
9@ArgumentsSource可以用来指定一个自定义的、可重用的ArgumentsProvider。注意ArgumentsProvider的实现必须声明为顶级类或静态嵌套类。

3.参考文章

该升级你的JUnit版本了——JUnit5基本介绍Spring Boot 集成 JUnit5,更优雅单元测试JUnit 5 User Guide

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:36:19  更:2021-09-29 10:36:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:40:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码