目 录
- 一.注解
- 二.断言
- 三.用例的执行顺序
- 四.参数化
- 五.测试套件
自动化就是 selenium 脚本来实现的
junit 是 java 的单亓测试工具,只不过我们在实现自动化的时候需要借用一下下 junit 库里面提供的一些方法
引入依赖 Junit 5
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.10.1</version><scope>test</scope>
</dependency>
一.注解
junit中提供了非常强大的注解功能。(取代了 main 函数执行的任务)
-
@Test:表示方法是测试方法,执行当前这个类时,会自动的执行该类下所有带@Test注解的用例
-
@BeforeEach:当前的方法需要在每个用例执行之前都执行一次
-
@BeforeAll:当前的方法需要在当前类下所有用例之前执行一次,被该注解修饰的方法必须为静态方法
-
@AfterEach:当前的方法需要在每个用例执行之后都执行一次
-
@AfterAll:当前的方法需要在当前类下所有用例之后执行一次,被该注解修饰的方法必须为静态方法
二.断言
Assertions 类
之前我们可知 “百度一下” 是属性值,当我们执行这个用例的时候,对于程序来说结果是正确的,对于测试人员来说是错误的。
对于测试人员来说,如果自动化测试用例执行结果是报错的,那么大多情况下是出现了bug,这种情况测试人员是需要立即去排查问题的
断言 匹配/不匹配:assertEquals / assertNotEquals
断言结果 为真/为假:assertTrue / assertFalse
断言结果 为空/不为空:assertNull / assertNotNull
三.用例的执行顺序
官方网站没有明确说明用例默认的执行顺序的规则
测试用例的执行并不会按照我们编写用例的顺序来执行
- 通过order注解来排序
先要使用注解说明当前类下所有的用例需要使用 order 注解来进行排序注意:该注解必须要用在类上
然后通过 0rder 来指定用例的具体顺序
四.参数化
尽可能的通过一个用例,多组参数来模拟用户的行为
在使用参数化注解之前需要先声明该方法为参数化方法:@ParameterizedTest
- 单参数:(要通过注解提供数据来源)
@ValueSource(数据类型方法 = {参数1,参数2,…})
数据类型包含:short,byte,int,long,float,double,char,boolean,java.lang.string
- 多参数
-
从注解里手动编写数据源
每个双引号就是一组 参数/测试用例 -
从第三方 csv 文件读取数据源
创建好csv文件之后,一定要用系统自带的 Excel 工具来打开和编辑 csv 文件,不然会一堆乱码报错
- 动态参数
如果我们要返回的数据类型是统一的,那么这里就直接写具体的类型
如果要返回的数据类型不统一,就需要使用组合类型 Arguments
还有第二种写法:
当我们不指定数据源方法名时,会自动的找跟用例方法名同名的静态方法
使用了参数化注解的方法不能再用@Test注解(只能作用在非参数化的用例上)
五.测试套件
当我们在不同的 Java.class 类中 或者 不同文件中,想把所有的注解下的程序同时运行起来该怎么做呢?测试套件解决了这个问题
先创建一个类,通过 @Suite
注解标识该类为测试套件类(而不是测试类)
方法一:指定类来运行用例
想要运行的用例必须要被@Test注解(除参数化的用例外)
方法二:指定包名来运行包下所有的用例
会发现包下有四个测试类,只运行了一个类
如果使用包名来指定运行的范围,那么该包下面所有的测试类的命名需要以 Test/Tests 结尾(T必须要大写)
想要运行的用例必须要被 @Test 注解(除参数化的用例外)