单元测试框架——Junit5
文章目录
- 1.什么是单元测试
- 2.了解junit5
- 3.常用注解
- 4.断言
- 4.1.什么是断言
- 4.2.常用断言
- 5.用例执行顺序
- 6.测试套件Suite
- 7.参数化
1.什么是单元测试
单元测试是对软件中的最小可测试单元进行检查和验证的过程
单元测试是开发者编写一小段代码,用于检验被测代码的一个很小的,很明确的(代码)功能是否正确,执行测试单元就是为了证明某段代码的执行结果是否符合我们的预期。如果测试结果符合我们的预期,称之为测试通过,否则就是测试不通过。
2.了解junit5
junit是一个开源的java语言的单元测试框架。java方向使用最广泛的单元测试框架。使用java开发者都应当学习junit并且掌握单元测试的编写。要求Java版本最低为8。
selenium与junit的关系:
假如要实现一个灯泡,selenium就是灯泡,而junit就是电源
在idea 中使用junit,首先需要导入依赖:
3.常用注解
注解 | 解释 |
---|---|
@Test | 表示这是一个测试方法 |
@BeforeEach | 其他测试方法执行之前都要执行一遍 |
@AfterEach | 其他测试方法执行之后都要执行一遍 |
@BeforeAll | 其他所有方法执行之前只需要执行一遍 |
@AfterAll | 其他所有方法执行之后只需要执行一遍 |
【注意】使用AfterAll注解的方法必须定义为static
(1)@Test:表示这是一个测试方法
如下图,使用了@Test注解之后,就可以不用main方法就可以执行这个方法。
(2)@BeforeEach:其他方法执行之前都先执行一次。
如下图:在执行bbb方法与ccc方法之前都必须得先执行aaa方法
(3)@AfterEach:其他测试方法执行之后都必须执行一遍
如下图:测试方法在bbb与ccc在执行之后都必须执行测试方法aaa。
(4)@BeforeAll:其他所有方法执行之前都只需要执行一次
如下图:在bbb与ccc测试方法执行之前,aaa方法只执行一次
(5)@AfterAll:其他所有方法执行之后只需要执行一次
如下图:在bbb与ccc测试方法执行之后,aaa方法都只需要执行一次
以上就是Junit单元测试中的常用注解,此外还有一些注解:
注解 | 解释 |
---|---|
@ParameterizedTest | 表示这个方法是参数化测试(可以拥有参数) |
@RepeatedTest | 方法可重复执行 |
@DisplayName | 为测试类或方法设置展示名称) |
@Timeout | 表示测试方法如果超过了指定时间将会返回错误 |
4.断言
4.1.什么是断言
编写代码时,我们往往会做出假设,断言用于判断这些假设为真还是为假。因此断言表示为布尔表达式。
4.2.常用断言
方法 | 说明 |
---|---|
assertEquals(expect,actual) | 校验期望值与实际值是否匹配 |
assertNotEquals(expect,actual | 校验期望值与实际值是否不匹配 |
assertTrue() | 判断给定的布尔值是否为True |
assertFalse() | 判断给定的布尔值是否为false |
assertNull() | 判断给定的对象引用是否为null |
assertNotNull() | 判断给定的对象引用是否不为null |
assertSame() | 判断两个对象引用是否指向同一个对象 |
assertNotSame() | 判断两个对象引用是否指向不同的对象 |
【注意】如果断言失败,则后面的代码都不会执行,如果断言成功,则程序往下执行
(1) assertEquals(expect,actual):校验期望值与实际值是否匹配
assertNotEquals(expect,actual:校验期望值与实际值是否不匹配
断言成功,代码往下执行
断言失败,不会往下执行:
(2)assertTrue() 判断给定的布尔值是否为True
assertFalse() 判断给定的布尔值是否为false
(3)assertNull() 判断给定的对象引用是否为null
assertNotNull() 判断给定的对象引用是否不为null
5.用例执行顺序
junit的默认执行顺序是不确定的。官方文档没有明确给出。我们仍然可以使用junit里提供的方法来手动设置用例的执行顺序
文档中给出的排序方法有:方法的排序,标签的排序等等…
(1)方法的排序:@Order注解进行排序
为什么需要用到junit里的排序方法?
我们在编写测试用例的时候进行保持用例的独立性。
如果用例之间存在关联关系,那么就需要手动的指定用例的执行顺序。
6.测试套件Suite
通常把一组相关的测试称为一个测试套件(test suite)。
(1)指定类,添加到套件中并执行
(2)指定包,添加到套件中并执行
【注意】执行包下面所有以Test命名的文件中的所有@Test注解的用例
如果包下没有命名包含Test\tests的文件,则会提示找不到对应的用例。
7.参数化
@Parameterizedtest标注方法类型为参数化﹐不需要再添加@Test注解,如果添加了,该用例会多执行一遍
(1)单参数:@ValueSource(类型={参数1,参数2,…})
这里面的类型支持的有:
(2)多参数 @CsvSource
这里可以手动指定分隔符:
(3)多参数
如果参数很多的话,我们可以借助文件注入的方式进行添加:@CsvSource(指定文件路径)
此外,我们还可以指定文件路径为本地文件路径:
【注意】数字类型的参数必须有值,否则会导致用例执行失败
(4)动态参数
- 动态参数的单参数:@MethodSource(“”)
- 动态参数的多参数
完!
单元测试框架——Junit5相关推荐
- IDEA中使用JUnit5(单元测试框架)
JUnit单元测试框架由Erich Gamma和Kent Beck编写的一个回归测试框架(Regresion Testing Framework),主要用于Java语言程序的单元测试,目前使用的主流版 ...
- Java单元测试框架与实践(Junit5 + Mockito)
Java单元测试框架与实践 本文首先在理论上归纳了单元测试在宏观和微观层面要遵循的基本原则,以及测试覆盖率的要求和评价维度.然后具体阐述了笔者实战中总结的基于Junit + Mockito 的单元测试 ...
- JUnit5单元测试框架的使用教程与简单实例
1.JUnit5的使用教程 1.1 简介 JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最 ...
- 测开- Junit 单元测试框架
文章目录 前言 了解 Junit 准备工作 - 在 pom.xml 文件中引入 Junit 相关依赖 1.Junit注解 @Test @BeforeEach.@BeforeAll @AfterEach ...
- 详解介绍JUnit单元测试框架(完整版)
(一)JUnit介绍 目录 (一)JUnit介绍 1.什么是单元测试? 2.什么是单元测试框架? 3.什么是JUnit? (二)JUnit 安装 1.IntelliJ IDEA 安装 Junit 2. ...
- Junit单元测试框架
1)Junit是一个开源的JAVA语言的单元测试框架,也是JAVA方向使用最广泛的单元测试框架,使用JAVA开发者都应该学习junit框架,并且掌握单元测试的编写 2)selenium和Junit都可 ...
- 浅谈java单元测试框架junit4/5
0 前言 junit是一个开源的Java语言的单元测试框架.目前junit主要有版本junit3,junit4和junit5.因在junit3中,是通过对测试类和测试方法的命名来确定是否是测试,且所有 ...
- 高质量的单元测试 Spock单元测试框架详讲
文章目录 方法篇 为什么需要单元测试 单元测试的定义 单元测试与其他测试的区别 单元测试的作用 关于单元测试的成本 如何写好单元测试 什么场景适合单元测试 单元测试的粒度 关于TDD TDD的三定律 ...
- java 单元测试_Java程序员必须要知道的单元测试框架Junit详解
作为一名java开发者,相信你或多或少的接触过单元测试,对于测试来讲它是一门能够区分专业开发人员与业余开发人员的重要学科,这篇文章将对java中最常见的一个单元测试框架junit进行一个梳理和讲解.如 ...
最新文章
- 重读TCP协议(3)
- 福利 | 50张第四届UBDC全域大数据峰会赠票大放送!
- cocos2dx 3.3 异步加载纹理
- SpringCloud实践分享-日志收集Kafka-ELK
- OSPF邻接形成过程
- python删除重复值所在的行数_python – 在last中删除具有重复值的行
- 45度做人 90度做事 180度为人 360度处事
- cross-entropy函数
- java开发环境以及数据类型
- 编程修养 阅读笔记四
- 唐宇迪学习笔记9:逻辑回归与梯度下降策略
- AVX AVX2 To enable them in other operations
- 12.15 小程序验证码点击刷新
- 领域驱动设计DDD:贫血模型和充血模型(比较重要)
- 关于计算机系统的基本组成
- 平年和闰年c语言程序,C语言平年,平年闰年问题
- excel文档文件加密的方法步骤
- python学习笔记项目_python第三方库之Django学习笔记一
- APK脱壳之—如何脱掉“梆梆加固”的保护壳
- 100行代码撸一个语音对话助手