自动化测试之Junit

Junit引入

Junit来编写和组织自动化测试用例,使用Selenium来实际模拟用户与Web应用程序的交互。也就是使用JUnit的测试功能来管理和运行Selenium测试。常见的做法是,使用JUnit作为测试框架来编写和管理测试用例,然后使用Selenium WebDriver来执行与Web应用程序的交互。

Junit是针对java的单元测试框架

我们学习的内容如下:

注解

@Test

@Disabled

@BeforeAll,@AfterAll,@BeforeEach,@AfterEach

参数化

单参数

多参数

CSV获取参数

方法获取参数

测试套件

通过class运行测试用例;通过包运行测试用例

1:添加Junit依赖

注解

注解Test:表示当前方法是一个测试用例

下方控制台:成功是绿色的;

失败就会报一堆红的;

在方法的运行图标上标红;意味则这个测试用例不能通过

注解:@Disabled

注解:@BeforeAll,@AfterAll

这个比较特殊,需要前面加static。因为他是针对类的;所以需要static。。你想想是不是静态的static才能做到比其它方法先执行;类加载的时候执行。在跑所有的测试用例之前会执行这个;;所有的测试用例执行完就会跑afterALI语句

想一想什么方法要放在这里面呢

创建驱动,打开网页;初始化在前;而关闭在后。比如idbc连接数据库。

关闭浏览器在后

注解:@BeforeEach,@AfterEach

一个测试用例执行前都会执行beforeeach;每一次测试用例执行后都会执行一次aftereach

参数化

参数依赖于另一个注解;这又是另一个依赖

单参数

注解@Parameterized作用在方法上面,用来表示这个方法支持传入多个参数;

注解@ValueSource用于指定传入参数的类型;例如:strings={}就表示传入的是一个string类型的数组。@ValueSource注解当中只支持一种数据类型。

这样子;这个测试用例会跑3次;每一次取一个数字

多参数

传不同类型数据:默认是逗号分割;我们可以用以下方法;定义分隔符

java 复制代码
    @ParameterizedTest
    @CsvSource(value = {"张三-20","李四-21","王五-22"},delimiter = '-')
    public void printStringAndAge(String name,int age){
        System.out.println("name:"+name+";age="+age);
    }

如果参数当中包含逗号:",",就需要使用单引号转义字符串。例如:" '张,三', 20 "

这样子才能正确的输出张,三

通过文件读取参数:@CsvFileSource(resources="/文件名称")。这里读取的内容(resources="/文件名称")也可以你自己指定一个

files = "C:\Users\廖雨wang\source\test01.csv"

resources目录下创建这个文件

方法传参


或者这样子写:

这两个注解和test是冲突的;相当于执行两次:第一次是如下这样子;参数没传过来,当然报错。。。第二次相当于把@test解注释掉再执行一次。。一次通过;一次不通过。

测试用例执行顺序

如果你没加任何的执行顺序指定;所有的测试用例一起执行;它们的顺序是固定的;就是看人家junit对这些是怎么实现的;不管你怎么调整都是固定的一样执行顺序

指定顺序:

1:先在类上添加@TestMethodOrder(MethodOrderer.OrderAnnotation.class)

2:在要指定顺序的方法上加@order(1);@order(2);@order(3);按照你的123顺序进行执行

在类上加@TestMethodOrder(MethodOrderer.Random.class);就表示随机的运行机制

断言

因为我们没有一个预期结果进行效验;就算进行效验都是需要if判断;是不是很麻烦

断言相等:如果相等;测试用例就通过

断言不相等:如果不相等;测试用例就通过

断言为空:如果为空;测试用例就通过

断言不为空:如果不为空;测试用例就通过

java 复制代码
String str="123";
Assertions.assertNotNull(str)

测试套件

通过class测试用例运行;

或者通过包名控制;这个注解要求传的是string数组;这样子就会按照先执行Test01这个包的测试用例;再执行Test08这个包的测试用例

相关推荐
什么都想学的阿超8 天前
【Redis系列 03】掌握Redis编程艺术:事务、管道与Lua脚本完全指南
redis·junit·lua
爱瑞瑞13 天前
Junit5测试类编写笔记
junit
黄暄13 天前
分布式锁优化:使用Lua脚本保证释放锁的原子性问题
java·redis·分布式·后端·junit·lua
cxh_陈15 天前
org.junit.runners.model.InvalidTestClassError:此类问题的解决
java·开发语言·junit
.生产的驴18 天前
SpringBoot 执行Lua脚本 服务端执行 减少性能损耗 优化性能 优化连接性能
java·数据库·spring boot·后端·junit·maven·lua
小小数媒成员18 天前
Unity—lua基础语法
unity·junit·lua
奋斗的老史19 天前
利用Lua脚本限制用户的访问频率
开发语言·junit·lua
渡梦酒19 天前
Redis批量删除Key的三种方式
数据库·redis·junit
兰德里的折磨55020 天前
为什么要使用stream流
java·jvm·spring boot·spring·junit·log4j·intellij-idea
i1yo_kiki20 天前
junit单元测试
junit·log4j