自动化就是 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


三.用例的执行顺序

官方网站没有明确说明用例默认的执行顺序的规则

测试用例的执行并不会按照我们编写用例的顺序来执行

  1. 通过order注解来排序
    在这里插入图片描述
    先要使用注解说明当前类下所有的用例需要使用 order 注解来进行排序注意:该注解必须要用在类上
     
    然后通过 0rder 来指定用例的具体顺序

四.参数化

尽可能的通过一个用例,多组参数来模拟用户的行为

在使用参数化注解之前需要先声明该方法为参数化方法:@ParameterizedTest

  • 单参数:(要通过注解提供数据来源)

在这里插入图片描述

@ValueSource(数据类型方法 = {参数1,参数2,…})

数据类型包含:short,byte,int,long,float,double,char,boolean,java.lang.string

  • 多参数
  1. 从注解里手动编写数据源
    在这里插入图片描述
    每个双引号就是一组 参数/测试用例

  2. 从第三方 csv 文件读取数据源

在这里插入图片描述

创建好csv文件之后,一定要用系统自带的 Excel 工具来打开和编辑 csv 文件,不然会一堆乱码报错

  • 动态参数

在这里插入图片描述

如果我们要返回的数据类型是统一的,那么这里就直接写具体的类型

如果要返回的数据类型不统一,就需要使用组合类型 Arguments

还有第二种写法:

当我们不指定数据源方法名时,会自动的找跟用例方法名同名的静态方法

在这里插入图片描述

使用了参数化注解的方法不能再用@Test注解(只能作用在非参数化的用例上)


五.测试套件

当我们在不同的 Java.class 类中 或者 不同文件中,想把所有的注解下的程序同时运行起来该怎么做呢?测试套件解决了这个问题

先创建一个类,通过 @Suite 注解标识该类为测试套件类(而不是测试类)

方法一:指定类来运行用例

在这里插入图片描述

想要运行的用例必须要被@Test注解(除参数化的用例外)

方法二:指定包名来运行包下所有的用例

在这里插入图片描述

会发现包下有四个测试类,只运行了一个类

如果使用包名来指定运行的范围,那么该包下面所有的测试类的命名需要以 Test/Tests 结尾(T必须要大写)

想要运行的用例必须要被 @Test 注解(除参数化的用例外)

更多推荐