JUnit

前言:自动化就是selenium脚本来实现的,JUnit是java的单元测试工具,只不过我们在实现自动化的时候需要借助一下JUnit库里面提供的一些方法。

目录

1、@Test

2、断言—Assertions类

3、用例的执行顺序

3.1 通过order注解来排序

3.2 参数化

3.3 测试套件

 

1、@Test

  1. @Test :表示方法是测试方法,执行当前这个类的时候,会自动的执行该类下的所以带@Test注解的用例。
  2. @BeforeEach:当前方法需要在每个用例执行之前都执行一次。
  3. @BeforeAll:当前的方法需要在当前所有用例之前执行一次,被该注释修饰的方法必须为静态方法。
  4. @AfterEach:当前方法需要在每个用例执行之后都执行一次。
  5. @AfterAll:当前的方法需要在当前所有用例之后执行一次,被该注释修饰的方法必须为静态方法。

@Test :

@BeforeEach:

@BeforeAll:

 @AfterEach:

@AfterAll:

2、断言—Assertions类

当我们在执行某个用力的时候,对于程序来说结果是对的,但是对于测试人员来说是错误的我们需要用到断言。

断言匹配/不匹配:

 @Testvoid Test(){ChromeDriver driver = new ChromeDriver();driver.get("https://www.baidu.com");//获取到  百度一下String text = driver.findElement(By.cssSelector("#su")).getAttribute("value");//假如期望获取到百度两下System.out.println(text);//Assertions.assertEquals("百度两下",text);Assertions.assertNotEquals("百度两下",text);driver.quit();}

断言结果为真/为假:

 void ccc(){Assertions.assertTrue(1 == 1);Assertions.assertFalse(1 == 0);}

断言结果为空/不为空:

void ddd(){Assertions.assertNull("cdgfdg");Assertions.assertNotNull("dfdfd");}

3、用例的执行顺序

有些用例的执行顺序并不是和我们要求的一样,每次变换顺序又十分麻烦,可以有以下方法:

3.1 通过order注解来排序

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class junitTest {@Test@Order(1)void baseAnnotate(){System.out.println("junit!!!!!!!!!!");}@Test@Order(2)void aaa(){System.out.println("aaaaa");}@Test@Order(3)void bbb(){System.out.println("bbbbb");}}

注:先要用注解来说明当前类下所有的用例需要使用order注解来进行排序,该注解必须用在类上

3.2 参数化

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

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

单参数:@ValueSource(数据类型方法 = {参数一,参数二。。。。})

代码及运行结果如下:

@ParameterizedTest@ValueSource(strings = {"zhangsan","lisi","wuwu"})void paramsTest(String name){System.out.println(name);}

多参数(从注解里面手动编写数据源

@ParameterizedTest@CsvSource ({"zhangsan,20","lisi,12","wuwu,22"})void moreParamsTest(String name,int age){System.out.println("name:" + name +"  age:" + age);}

多参数(从第三方csv文件读取数据源):

@ParameterizedTest@CsvFileSource(files = "D:\\web_code\\mycsv.csv")void csvFileParamsTest(String name, int age){System.out.println("name:" + name +"  age:" + age);}

动态参数:

如果返回的数据类型是统一的,就直接写具体的类型,否则就写组合类型Arguments

@ParameterizedTest@MethodSource("methodParams")void dynamicMethodParamsTest(String name ,int age){System.out.println("name:" + name + "age:" + age);}static Stream<Arguments> methodParams() throws InterruptedException {//构造动态参数String[] arr = new String[5];for(int i = 0; i < arr.length; i++){Thread.sleep(500);arr[i] = System.currentTimeMillis()+"";}return Stream.of(Arguments.arguments(arr[0],55),Arguments.arguments(arr[1],55),Arguments.arguments(arr[2],55),Arguments.arguments(arr[3],55),Arguments.arguments(arr[4],55));}

注:使用参数化注解的方法不能再使用@Test注解了

3.3 测试套件

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

  • 指定类来运行用例(想要运行必须要被@Test注解(除参数化的用例外)):

  • 指定包名来运行包下的所有用例(如果使用包名来指定运行的范围,那么该包下的所有类的命名需要以Test/Tests结尾,想要运行必须要被@Test注解(除参数化的用例外)):

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/251921.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

delete、truncate和drop区别

一、从执行速度上来说 drop > truncate >> DELETE 二、从原理上讲 1、DELETE DELETE from TABLE_NAME where xxx1.1、DELETE属于数据库DML操作语言&#xff0c;只删除数据不删除表的结构&#xff0c;会走事务&#xff0c;执行时会触发trigger&#xff08; 触发器…

ChatGPT之搭建API代理服务

简介 一行Docker命令部署的 OpenAI/GPT API代理&#xff0c;支持SSE流式返回、腾讯云函数 。 项目地址&#xff1a;https://github.com/easychen/openai-api-proxy 这个项目可以自行搭建 OpenAI API 代理服务器工具&#xff0c;该项目是代理的服务器端&#xff0c;不是客户端。…

IP数据云识别真实IP与虚假流量案例

随着互联网的普及&#xff0c;企业在数字领域面临着越来越复杂的网络威胁。为了保护网站免受虚假流量和恶意攻击的影响&#xff0c;许多企业正在采用IP数据云。本文将结合一个真实案例&#xff0c;深入探讨IP数据云如何成功准确地识别真实用户IP和虚假流量IP&#xff0c;提高网…

【数据分享】1929-2023年全球站点的逐日降雪深度数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 之前我们分享过1929-2023年全球气象站点的逐日平均气温数据、逐日最高气温数据…

计算机网络_1.6.1 常见的三种计算机网络体系结构

1.6.1 常见的三种计算机网络体系结构 1、OSI&#xff08;七层协议&#xff09;标准失败的原因2、TCP/IP参考模型3、三种网络体系结构对比 笔记来源&#xff1a; B站 《深入浅出计算机网络》课程 1、OSI&#xff08;七层协议&#xff09;标准失败的原因 &#xff08;1&#xf…

[SWPUCTF 2021 新生赛]easyupload1.0

发现是上传文件第一想到是文件木马 <?php eval ($_POST[123]);?>木马上传burp修改后缀发现flag里面这个是假的 我们猜想是在phpinfo我们上传<?php eval(phpinfo(););?>木马上传burp修改后缀里面 CtrlF 发现flag

IT行业证书的获取与价值:提升职业竞争力的关键

目录 IT行业证书的价值和作用 1. Cisco&#xff08;思科&#xff09;认证&#xff08;如CCNA、CCNP、CCIE&#xff09;&#xff1a; 2. 微软认证&#xff08;如MCSA、MCSE、MCSD&#xff09;&#xff1a; 3. 计算机网络技术&#xff08;CompTIA Network、CompTIA Security&a…

亲测解决vscode的debug用不了、点了没反应

这个问题在小虎登录vscode同步了设置后出现,原因是launch文件被修改或删除。解决方法是重新添加launch。 坏境配置 win11 + vscode 解决方法 Ctrl + shift + P,搜索debug添加配置: 选择python debugger。 结果生成了一个文件在当前路径: launch内容: {// Use Int…

【jenkins】主从机制及添加Slave节点操作

一、master-slave 日常构建Jenkins任务中&#xff0c;会经常出现下面的情况&#xff1a; 自动化测试需要消耗大量的 CPU 和内存资源&#xff0c;如果服务器上还有其他的服务&#xff0c;可能会造成卡顿或者宕机这样的情况&#xff1b; Jenkins 平台上除了这个项目&#xff0c…

雷达DoA估计的跨行业应用--麦克风阵列声源定位(Matlab仿真)

一、概述 麦克风阵列&#xff1a; 麦克风阵列是由一定数目的声学传感器&#xff08;麦克风&#xff09;按照一定规则排列的多麦克风系统&#xff0c;而基于麦克风阵列的声源定位是指用麦克风拾取声音信号&#xff0c;通过对麦克风阵列的各路输出信号进行分析和处理&#xff0c;…

【计算机网络】物理层概述|通信基础|奈氏准则|香农定理|信道复用技术

目录 一、思维导图 二、 物理层概述 1.物理层概述 2.四大特性&#xff08;巧记"械气功程") 三、通信基础 1.数据通信基础 2.趁热打铁☞习题训练 3.信号の变身&#xff1a;编码与调制 4.极限数据传输率 5.趁热打铁☞习题训练 6.信道复用技术 推荐 前些天发…

虹科技术|一文详解IO-Link Wireless技术如何影响工业无线自动化

导读&#xff1a;在工业无线自动化的飞速发展进程中&#xff0c;IO-Link Wireless技术成为了一项具有颠覆性的创新。它将IO-Link协议与无线连接完美结合&#xff0c;解决了传统通信技术在工业应用中的痛点。本文将深入解析IO-Link Wireless技术的原理、应用领域、优势以及实际案…

深入理解网络通信和TCP/IP协议

目录 计算机网络是什么&#xff1f; 定义和分类 计算机网络发展简史 计算机网络体系结构 OSI 七层模型 TCP/IP 模型 TCP/IP 协议族 TCP/IP 网络传输中的数据 地址和端口号 MAC地址 IP 地址 端口号 为什么端口号有65535个&#xff1f; 综述 TCP 特性 TCP 三次握…

CSDN文章导出工具

源码地址&#xff1a; github:https://github.com/lishuangquan1987/CSDNExportergitee:https://gitee.com/lishuangquan1987/csdnexporter 介绍 最近有CSDN博客导出来的需求&#xff0c;翻看了很多开源工具&#xff0c;都不能用或者不好用&#xff0c;于是决定自己做一个。…

【Delphi 基础知识 28】ListView控件的详细使用

文章目录 控件设置增加数据删除选中的行按标题删除读取某行某列内容修改某行某列内容清空内容设置焦点上下移动条目读出选中行信息点击正反排序每行item显示不一样的颜色 控件设置 ViewStyle 设为vsReportReadOnly 设为TrueGridLines 设为TrueRowSelect 设为True 增加数据 …

SpringCloud + Nacos环境下抽取Feign独立模块并支持MultipartFile

文章目录 一、前提条件和背景1. 前提2. 背景 二、Feign模块1. 依赖引入2. application.yaml配置3. 扩展支持MultipartFile4. 将media-api注册到feign 三、Media模块四、Content模块1. 引入依赖2. 启用FeignClient3. 测试 五、需要澄清的几点 一、前提条件和背景 1. 前提 已经…

sql相关子查询

1.什么是相关子查询 相关子查询是一个嵌套在外部查询中的查询&#xff0c;它使用了外部查询的某些值。每当外部查询处理一行数据时&#xff0c;相关子查询就会针对那行数据执行一次&#xff0c;因此它的结果可以依赖于外部查询中正在处理的行。 2.为什么要使用相关子…

解决hive表新增的字段查询为空null问题

Hive分区表新增字段&#xff0c;查询时数据为NULL的解决方案 由于业务拓展&#xff0c;需要往hive分区表新增新的字段&#xff0c;hive版本为2点多。 于是利用 alter table table_name add columns (col_name string )新增字段&#xff0c;然后向已存在分区中插入数据&#x…

JAVASE进阶:Collection高级(2)——源码剖析ArrayList、LinkedList、迭代器

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;JAVASE进阶&#xff1a;Collection高级&#xff08;1&#xff09;——源码分析contains方法、lambda遍历集合 &#x1f4da;订阅…

2024年2月更新阿里云服务器租用价格表,最新报价

2024年2月阿里云服务器租用价格表更新&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年&#xff0c;轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核…