目录
Junit框架
导入Junit到项目
Junit注解
@Test
@Disabled
@BeforeAll / @AfterAll
@BeforeEach / @ AfterEach
参数化
单参数
多参数
CSV获取参数
方法获取参数
断言
assertEquals / assertNotEquals
assertNull / assertNotNull
用例执行顺序
测试套件Suite
指定类,添加到套件中执行
指定包,添加到套件中执行
Junit框架
Junit框架是单元测试框架,方便测试项目,使我们在工作中必不可少的。
导入Junit到项目
登录Maven中央仓库:https://mvnrepository.com/ ,搜索Junit进行下载依赖并导入到项目中的pom.xml中
选择junit具体版本号
导入junit依赖到pom.xml中
Junit注解
在Junit注解中,常用的有@Test、@Disabled、@BeforeAll、@AfterAll、@BeforeEach、@AfterEach这几种。接下来就将详细介绍这几种注解在项目的使用方法。
@Test
表示当前的这个方法是测试用例
在使用@Test注解时,如果Test标红了,则提示未导包:
import org.junit.jupiter.api.Test;
@Disabled
表示测试时可以忽视这个测试用例
@BeforeAll / @AfterAll
@BeforeAll 表示在所有的测试用例运行之前跑对应的方法
@AfterAll 表示在所有的测试用例运行之后跑对应的方法
注意点:@BeforeAll 和@AfterAll 注解对应的方法时需要使用static静态方法
@BeforeEach / @ AfterEach
@BeforeEach 表示运行每个测试用例之前先运行该测试用例
@AfterEach 表示运行每个测试用例之后在运行该测试用例
参数化
我们在前面使用测试方法的时候都没有传入参数,当我们想要在测试用例中传入参数时,此时就需要使用到此时的参数化。
经常使用到的参数化有单参数、多参数、CSV获取参数和方法获取参数
在使用参数时,需要导入参数依赖,同样的操作,在中央仓库搜索params,将相关依赖导入到pom.xml中
单参数
单参数需要使用如下注解:
@ParameterizedTest @ValueSource(strings = {"AA","BB","DD"})
(查看ValueSource源码)注意传入参数格式:
多参数
多参数使用的注解是@CsvSource,传入的多参数以字符串数组形式传入,查看源码即可
@ParameterizedTest @CsvSource("小红,3,4")
CSV获取参数
CSV传入参数是以文件的形式传入参数,使用注解:
@CsvFileSource(resources = "TestSource.csv") TestSource.csv为创建的文件名
方法获取参数
方法获取参数就是定义一个新方法,在方法中定义多个参数,然后从方法中来获取参数
使用注解:
@ParameterizedTest
@MethodSource("hello") hello为方法名
断言
assertEquals / assertNotEquals
通过这两个方法我们可以比较我们要测试的目标和我们所预期的是否一致。
assertEquals
assertNotEquals
assertNull / assertNotNull
可以判断实际值是否为空
assertNull 预期值是null
assertNotNull 预期值不是null
用例执行顺序
Junit里面测试用例的测试顺序默认是不确定的,官方文档没有明确给出。但是我们可以使用Junit自带的方法来自定义测试用例的测试顺序
1、在使用排序注解之前,需要在当前类之前加上标记排序的注解
@TestMethodOrder(MethodOrderer.OrderAnnotation.class) //标记当前类方法来进行排序2、使用@order注解来自定义排序
@Order() //()为数字即自定义执行顺序
面试题:假如面试官问为什么要使用Junit里面的排序方法?
答:如果测试用例之间存在关联关系的话,就需要手动的来指定测试用例的执行顺序
测试套件Suite
测试套件就是让我们一次性可以执行多个类或者多个包避免我们一个一个类来点击测试,或者把所有的测试都写到一个类中。
在进行测试套件之前,需要先导入Suite的相关依赖和Engine的依赖(即需要导入2个依赖)
1、在Maven中央仓库下载Suite依赖
把下面相关依赖导入pom.xml中
2、导入Engine的依赖
指定类,添加到套件中执行
创建一个测试套件类,将各个测试用例所在的类添加到测试套件类中
使用到的注解:
@Suite @SelectClasses({Test01.class,Test02.class}) //Test01和Test02为测试类
指定包,添加到套件中执行
创建一个测试套件包,将各个测试用例所在的包添加到测试套件包(用法和指定类测试套件一致)
使用到的注解:
@Suite @SelectPackages({"testPackage01","testPackage02"})