1.说明

Junit5是单元测试框架Juint4的升级版,
与Junit4框架有很大的不同,
它由三个模块组成:

JUnit5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

JUnit5整体架构图如下:

1.1.Junit Platform

这个模块是Junit提供的平台功能模块,
不仅支持Junit自带的测试引擎,
只要实现了Junit平台引擎的接口,
任何测试框架都可以在JUnit Platform上运行,
意味着Junit5将会有着很强的拓展性。

1.2.Junit Jupiter

这个模块是Junit5的核心,
是一个基于Junit Platform引擎的实现,
它包含许多丰富的新特性来使得自动化测试更加方便和强大。

1.3.Junit Vintage

这个模块是兼容Junit3、Junit4版本的测试引擎,
使得旧版本的自动化测试也可以在Junit5下正常运行。

2.引入Pom依赖

在pom.xml引入Junit5的依赖:

<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.8.0</version><scope>test</scope>
</dependency>

如果只使用Junit5测试框架,
只需要依赖Junit Platform和Junit Jupiter即可,
而上面的junit-jupiter已经引入了必须的依赖。

3.新建测试类

在src/test/java目录下,
新建Math的测试类MathTest,
一般测试类与被测试类包路径相同,
然后在类名后面添加Test作为测试类:
java.lang.MathTest
由于java.lang是禁止使用的包名,
所以在包路径前面添加test:
test.java.lang.MathTest

4.新建测试方法

新建测试方法testMathMin,
用于测试Math.min()和max()的功能,
注意使用Junit5提供的注解@Test,
标识这是一个测试方法,
注解@DisplayName用于指定单元测试的名称,
否则默认使用的是单元测试方法的名称,
另外测试方法一般以test开头,
而且必须是public void的:

package test.java.lang;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;public class MathTest {@Testpublic void testMathMinSuccess() {int a = 1;int b = 9;int min = Math.min(a, b);Assertions.assertEquals(a, min);}@Test@DisplayName("测试Math的max方法")public void testMathMaxSuccess() {int a = 1;int b = 9;int max = Math.max(a, b);Assertions.assertEquals(b, max);}
}

注意用到的类都是org.junit.jupiter.api包下的。

5.断言判断结果

在上面的测试用例中,
使用Assertions断言,
判断Math.min返回的结果min,
是不是期望的最小值a:
Assert.assertEquals(a, min);
如果判断成功,则测试用例通过,
如果判断失败,则测试用例抛出异常,
表示Math.min的返回值超出预期,
可能代码功能存在问题,
需要开发介入定位问题。

Junit5使用了新的断言类:
org.junit.jupiter.api.Assertions。
相比Junit4的Assert断言类多了许多新的功能,
并且大量方法支持Java8的Lambda表达式,
注意不要把Junit5和Junit4中的类混在一起使用。

6.运行测试类

在Eclipse中运行测试类,
右键测试类MathTest -> Run As -> Junit Test,
或者使用快捷键:
Alt + Shift + X, T
MathTest单元测试执行结果如下:

如果测试类中存在多个测试方法,
上面的命令会执行所有测试方法,
如果只期望执行某个测试方法,
可以选中方法名称后,右键执行,
即可单独执行这个方法,
调试测试用例的时候很常用。

7.参考文章

JUnit 5 User GuideJunit5 Github


http://www.taodudu.cc/news/show-1250950.html

相关文章:

  • Junit5集成到SpringBoot工程
  • 语言代码表
  • Protobuf生成Java代码(Maven)
  • Protobuf生成Java代码(命令行)
  • Maven查看插件信息
  • SpringBoot脚手架工程快速搭建
  • SpringBoot集成MyBatis-Plus分页插件
  • SNMP客户端工具MIB Browser
  • PowerDesigner运行自定义VBS脚本,复制Name到Comment
  • BitMap-BitSet(JDK1.8)基本使用入门
  • IDEA查看Java类的UML关系图
  • 30. 包含min函数的栈
  • 35. 复杂链表的复制
  • 58 - II. 左旋转字符串
  • 03. 数组中重复的数字
  • 53 - II. 0~n-1中缺失的数字
  • 04. 二维数组中的查找
  • 11. 旋转数组的最小数字
  • 50. 第一个只出现一次的字符
  • 32 - I. 从上到下打印二叉树
  • 32 - II. 从上到下打印二叉树 II
  • 32 - III. 从上到下打印二叉树 III
  • 26. 树的子结构
  • PostgreSQL数据库密码
  • SpringBoot中使用Hibernate Validator校验工具类
  • 28. 对称的二叉树
  • 解决tomcat的undeploy
  • 解决eclipse出现The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path
  • 下载安装neo4j
  • vue-drag-resize实线页面的拖拽与缩放

Junit5集成到Maven工程相关推荐

  1. Junit5集成到SpringBoot工程

    1.说明 Spring Boot进行单元测试, 通过集成spring-boot-starter-test, 同时支持Junit4和Junit5测试框架, 下面使用Junit5进行单元测试, 基于一个已 ...

  2. Redis集成到Maven工程(Jedis客户端)

    1.说明 Redis不仅可以使用命令行操作, 也支持大部分主流编程语言的客户端, 本文介绍Java客户端Jedis的使用, Jedis API提供了完整的Redis命令, 能够和Redis命令行一一对 ...

  3. Junit4集成到Maven工程

    1.说明 Junit是Java中最常用的单元测试框架, 这里介绍的是Junit4, 开源项目地址:Github Junit4 后续会介绍更优秀的框架Junit5. 下面演示Junit4的基本使用方法, ...

  4. SpringBoot集成Maven工程

    1.说明 通过Maven向导创建一个Maven Project, 而非Spring Boot向导创建Spring Starter Project, 然后通过手工修改的方式, 使这个Maven工程支持S ...

  5. Drools创建Maven工程

    1.说明 本文介绍创建Drools的Maven工程的方法, 仅使用Eclipse开发工具, 不使用Drools的相关插件, 先创建一个Maven工程, 然后引入Drools的相关依赖即可, 最后再写一 ...

  6. idea/eclipse下Maven工程集成web服务(tomcat、jetty)

     idea/eclipse下Maven工程集成web服务 转载请注明出处:http://www.cnblogs.com/funnyzpc/p/8093554.html 应用服务器最常用的一般有这哥仨: ...

  7. 持续集成部署Jenkins工作笔记0008---创建用于测试的Maven工程

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 创建一个maven工程,用来测试,这里用的jsp简单做一个工程 把servlet api和jsp的 ...

  8. maven 设置打包路径为模块_4、Jenkins持续集成之maven编译

    简介 Jenkins是一个开源的持续集成工具,应用Jenkins搭建持续集成环境,可以进行自动构建.自动编译和部署,非常方便.在服务器比较少的情况下,Jenkins的优势并不明显,但是随着项目发展,服 ...

  9. maven工程导入项目打开404_Maven依赖配置和依赖范围

    教程前面用坐标一一对应地描述了构件,并且保存在仓库中了.那用坐标描述好后,把它们放在仓库中的作用是什么呢?当其他项目需要在这些构件的基础上做开发的时候,用户就没必要自己再重新实现一遍了.直接指定坐标, ...

最新文章

  1. android 退出函数,android – 关闭应用程序与退出按钮
  2. jquery右下角自动弹出关闭层
  3. 通常也是32位的HTML5
  4. java excel条件格式_Java 使用条件格式高亮Excel单元格
  5. php怎么求阶乘_如何实现一个PHP类来计算整数的阶乘?(代码详解)
  6. `ECS弹性计算服务
  7. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_01-自定义查询页面-服务端-Dao...
  8. Golang 1.16新特性-embed包及其使用
  9. 联合概率 条件概率 边缘概率之间关系
  10. face++实现人脸识别及人脸相似度对比
  11. Neo.4j 使用总结
  12. 第一章 Hadoop启动Shell启动脚本分析--基于hadoop-0.20.2-cdh3u1
  13. 《规范》前端编码规范
  14. Linux脚本:Bash脚本看这一篇就够了
  15. 面对大量的用户数据泄露事件,普通用户该如何保护个人的网络信息安全?
  16. 搜狗输入法语音转文字体验报告
  17. python爬虫之Scrapy(一)
  18. 计科考研里的【计算机系统结构、计算机软件与理论、计算机应用技术】都是什么意思?...
  19. 网易有道产品笔试及个人解答(小部分题目)
  20. 杀鸡用用牛刀 scrapy框架爬取豆瓣电影top250信息

热门文章

  1. HDU-1712-ACboy needs your help
  2. Memory Notification: Library Cache Object loaded into SGA问题
  3. 两个datatable的比较
  4. c++ 动态数组初始值不为0?
  5. Tips--windows系统下gcc编译C文件为so共享库
  6. opencv实战3: CascadeClassifier+Haar特征进行人脸检测
  7. 7-121 删除字符串中的子串 (20 分)
  8. STM32(三)-------流水灯(标准库函数)
  9. 新版python安装包(直接提取安装)
  10. final string 堆区 栈区 java_JVM内存初学 堆、栈、方法区