单元测试框架——Junit5

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(“”)

在这里插入图片描述

  • 动态参数的多参数

在这里插入图片描述


完!

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十叶知秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值