什么是 JUnit?

JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。

JUnit 促进了“先测试后编码”的理念,强调建立测试数据的一段代码,可以先测试,然后再应用。这个方法就好比“测试一点,编码一点,测试一点,编码一点……”,增加了程序员的产量和程序的稳定性,可以减少程序员的压力和花费在排错上的时间。

什么是Junit5?

与以前的JUnit版本不同,JUnit 5由来自三个不同子项目的几个不同模块组成。

JUnit 5 = JUnit平台 + JUnit Jupiter + JUnit Vintage

特点:

  • JUnit 是一个开放的资源框架,用于编写和运行测试。
  • 提供注释来识别测试方法。
  • 提供断言来测试预期结果。
  • 提供测试运行来运行测试。
  • JUnit 测试允许你编写代码更快,并能提高质量。
  • JUnit 优雅简洁。没那么复杂,花费时间较少。
  • JUnit 测试可以自动运行并且检查自身结果并提供即时反馈。所以也没有必要人工梳理测试结果的报告。
  • JUnit 测试可以被组织为测试套件,包含测试用例,甚至其他的测试套件。
  • JUnit 在一个条中显示进度。如果运行良好则是绿色;如果运行失败,则变成红色。

测试工具

测试工具是一整套固定的工具用于基线测试。测试工具的目的是为了确保测试能够在共享且固定的环境中运行,因此保证测试结果的可重复性。它包括:

  • 在所有测试调用指令发起前的 setUp() 方法。
  • 在测试方法运行后的 tearDown() 方法。

测试套件

测试套件意味捆绑几个测试案例并且同时运行。在 JUnit 中,@RunWith 和 @Suite 都被用作运行测试套件。

注解

注解 描述

@Test

表示方法是测试方法。与JUnit 4的@Test注释不同,此注释不声明任何属性,因为JUnit Jupiter中的测试扩展基于其自己的专用注释进行操作。除非重写这些方法,否则它们将继承

@ParameterizedTest

表示方法是参数化测试。除非重写这些方法,否则它们将继承

@RepeatedTest

表示方法是重复测试的测试模板。除非重写这些方法,否则它们将继承

@TestFactory

表示方法是动态测试的测试工厂。除非重写这些方法,否则它们将继承

@TestTemplate

表示方法是测试用例的模板,测试用例设计为根据已注册提供程序返回的调用上下文的数量被多次调用。除非重写这些方法,否则它们将继承

@TestMethodOrder

用于为带注释的测试类配置测试方法的执行顺序;类似于JUnit 4的@FixMethodOrder。这样的注释是继承的

@TestInstance

用于为带注释的测试类配置测试实例生命周期。这样的注释是继承的

@DisplayName

声明测试类或测试方法的自定义显示名称。这样的注释不是继承的

@DisplayNameGeneration

声明测试类的自定义显示名称生成器。这样的注释是继承的

@BeforeEach

表示该注释的方法应该被执行之前 的每个 @Test@RepeatedTest@ParameterizedTest,或@TestFactory方法在当前类; 类似于JUnit 4的@Before。除非重写这些方法,否则它们将继承

@AfterEach

表示该注释的方法应该被执行之后 每个 @Test@RepeatedTest@ParameterizedTest,或@TestFactory方法在当前类; 类似于JUnit 4的@After。除非重写这些方法,否则它们将继承

@BeforeAll

表示该注释的方法应该被执行之前 所有 @Test@RepeatedTest@ParameterizedTest,和@TestFactory方法在当前类; 类似于JUnit 4的@BeforeClass。此类方法是继承的(除非它们被隐藏覆盖),并且必须被继承(除非static使用“每类” 测试实例生命周期)。

@AfterAll

表示该注释的方法应该被执行之后 的所有 @Test@RepeatedTest@ParameterizedTest,和@TestFactory方法在当前类; 类似于JUnit 4的@AfterClass。此类方法是继承的(除非它们被隐藏覆盖),并且必须被继承(除非static使用“每类” 测试实例生命周期)。

@Nested

表示带注释的类是一个非静态的嵌套测试类。@BeforeAll@AfterAll方法不能直接在使用@Nested测试类除非“每级” 测试实例的生命周期被使用。这样的注释不是继承的

@Tag

用于在类或方法级别声明用于过滤测试的标签;类似于TestNG中的测试组或JUnit 4中的类别。此类注释在类级别继承,而不在方法级别继承

@Disabled

用于禁用测试类或测试方法;类似于JUnit 4的@Ignore。这样的注释不是继承的

@Timeout

如果执行超过给定的持续时间,则使测试,测试工厂,测试模板或生命周期方法失败。这样的注释是继承的

@ExtendWith

用于声明性地注册扩展。这样的注释是继承的

@RegisterExtension

用于通过字段以编程方式注册扩展。除非被遮盖,否则这些字段将被继承

@TempDir

用于通过生命周期方法或测试方法中的字段注入或参数注入来提供临时目录;位于org.junit.jupiter.api.io包装中。

JUnit 5- 概述相关推荐

  1. JUnit 5 简介

    转自:https://www.ibm.com/developerworks/cn/java/j-introducing-junit5-part1-jupiter-api/index.html http ...

  2. Java单元测试工具:JUnit4(一)——概述及简单例子

    (一)JUnit概述及一个简单例子 看了慕课网的JUnit视频教程:http://www.imooc.com/learn/356,总结笔记.         这篇笔记记录JUnit的概述,以及一个快速 ...

  3. 走向单体地狱(五):JUnit单元测试

    文章目录 JUnit 简介 概述 JUnit 特点 第一个 JUnit 单元测试 POM 创建测试类 JUnit 注解 JUnit 断言 什么是断言 常用断言方法 测试断言效果 JUnit 简介 概述 ...

  4. 我的JavaWeb学习1

    说明:资源文件来自于,网络.感谢传智播客的视频. MyEclipse介绍 它是Eclipse的插件!  选择工作空间!  配置jdk  配置工作空间的编码:从此之后你创建的任何项目中的文本文件默 ...

  5. 安卓输入法弹出后css横屏,mui开发安卓端,输入法软键盘导致css横屏样式判断触发...

    mui开发安卓端,输入法软键盘导致css横屏样式判断触发 mui开发安卓端,输入法软键盘导致css横屏样式判断触发 css 横屏媒体查询 @media screen and (orientation: ...

  6. Spring 3.x企业应用开发实战

    Java技术大系 Spring 3.x企业应用开发实战 陈雄华    林开雄      著 Publishing House ofElectronics Industry 北京·  BEIJING 内 ...

  7. 「译」JUnit 5 系列:基础入门

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, ...

  8. Spring Cache-缓存概述及使用

    概述 缓存的概念 缓存命中率 过期策略 Spring Cache的好处 Spring Cache的缺点 自定义缓存管理器粗略实现 使用Spring Cache 示例源码 概述 伴随信息量的爆炸式增长以 ...

  9. 学习笔记之-Activiti7工作流引擎,概述,环境搭建,类关系图,使用Activiti BPMN visualizer,流程变量,组任务 网关,Activiti整合Spring SpringBoot

    本篇学习笔记是观看黑马程序员Activiti7视频而得 Activiti7 一.工作流介绍 1.1 概念 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是" ...

  10. junit:junit_简而言之,JUnit:另一个JUnit教程

    junit:junit 为什么还要另一个JUnit教程? 对于Java世界中的开发人员而言, JUnit似乎是最受欢迎的测试工具 . 因此,难怪就此主题已经写了一些好书 . 但是我仍然经常遇到程序员, ...

最新文章

  1. ASP.NET MVC Framework体验(1):从一个简单实例开始
  2. .NET中的IO操作之文件流
  3. day01语法python入门_2
  4. java异常处理 ppt_Java异常处理、多线程ppt课件
  5. 惠普瘦客户机多屏显示T5740
  6. 【KG】知识图谱基本概念工程落地常见问题
  7. mysql 优化实例之索引创建
  8. 读Zepto源码之Data模块
  9. socket数据的发送和接收
  10. 直播app源码开发,聊天服务器的搭建教程
  11. Python 图片压缩
  12. 地理信息系统导论第八版_地理信息系统导论.pdf
  13. BGP——基本概念3(路由聚合)
  14. 【ACWing】1402. 星空之夜
  15. zookeeper选举机制详解
  16. 「Slack」- 安装 @20210303
  17. 计算机软件及工程知识,软件工程复习题及答案(完整)
  18. 5 款非常好用的 Docker 工具
  19. mt7601驱动加载
  20. 【Day8.3】黄河第一桥

热门文章

  1. JavaScript学习手册一
  2. uni-app 微信公众号支付
  3. [雨松MOMO程序研究院]Unity3D研究院之构建游戏框架与导出IOS项目(一)
  4. leetcode 718 最长公共子串
  5. java判断字符串是否是空,java判断字符串是否为空的方法
  6. nmap和masscan
  7. 如何在word中实现连续编号自动打印
  8. darknet + yolo3 训练自己的数据集
  9. 小程序常用的10款框架
  10. 在线vip全网音乐搜索下载源码