Junit基本使用

news2024/12/23 3:00:19

文章目录

    • 0. 了解Junit5
    • 1. 注解
    • 2. 断言
    • 3. 用例执行顺序
    • 4. 测试套件(Suite)
    • 5.参数化

0. 了解Junit5

Java版本最低要求为8。Junit是一个开源的java语言的单元测试框架。java方向使用最广泛的单元测试框架。使用java开发者都应当学习Junit并且掌握单元测试的编写。
selenium 和 Junit
举个栗子:假如说我们要实现一个灯泡,selenium就是灯泡,junit就是电源。

通过maven安装Junit依赖的包:

        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.8.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.8.2</version>
            <scope>test</scope>
        </dependency>

1. 注解

@Test 表示一个方法/用例
@BeforeEach : 执行其他用例前都会执行一次@BeforeEach的用例
@BeforeAll : 在所有其他用例前执行一次 BeforeAll用例,使用@BeforeAll 注解的方法/用例必须是静态static的方法.
@AfterEach: 其他方法执行后,都要执行一遍
@AfterAll: 所以方法执行之后才被执行.

@BeforeEach的例子如下:

在这里插入图片描述

2. 断言

写自动化测试,测试结果分为两种,要么成功的,要么失败的。

assertEquals(expect,actual) : 校验期望值和实际值是否匹配
assertNotEquals(expect,actual) : 校验期望值和实际值是否不匹配
assertTure(),assertFalse() : 参数是表达式,参数是boolean类型.
assertNull() : 判断是否为Null
assertNotNull() : 判断是否不为Null

如下assertEquals案例:

   static public void ddd()
    {
      // 是相同,没有断言
        Assertions.assertEquals("baiduyixia","baiduyixia");
        System.out.println("ddd");
    }

3. 用例执行顺序

Junit的默认执行顺序是不确定的。官方文档没有明确给出。
我们仍然可以使用Junit里提供 的方法来手动设置用例的执行顺序。

文档中给出排序方法非常多 :诸如方法名的排序,标签的排序。

在这里插入图片描述

为什么需要Junit用到排序方法?

如果用例之间存在关联关系,那么就需要手动的指定用例的执行顺序.
我们在编写测试用例的时候应该尽可能的保持用例的独立性。

4. 测试套件(Suite)

注意: 如下按照从左往右执行测试用例.

1)指定类,添加到套件中并执行

//如下按照从左往右执行测试用例.
@Suite
@SelectClasses({autotest.class},{.....}) // 加载autotest.java下的所有用例
public class runAllSuite {
}

2)指定包,添加到套件中并执行(执行包下面所有以Test命名的文件中的所有@Test注解的用例)

在这里插入图片描述

5.参数化

@Parameterizedtest 标注方法类型为参数化 , 不需要再添加@Test注解,如果添加了,该用例会多执行一遍.

参数来源有常见的三种方式:

1) 单参数 @ValueSource(类型s= {参数1,参数2,........})

valueSource中支持的类型有:

  • short
  • byte
  • int
  • long
  • float
  • double
  • char
  • boolean
  • java.lang.String
  • java.lang.Class

如下图案例:printName函数执行了4次,分别打印hhh,jjj

在这里插入图片描述

2) 多参数@CsvSource

delimiter : 指定一组参数的分隔符,默认为 逗号.

在这里插入图片描述

如果一组参数包含了逗号,需要使用 ‘’ 号

在这里插入图片描述

3) 多参数@CsvfileSource

如果参数非常多,在代码中编写不太好看,就可以借助文件注入的方式来添加.

@CsvfileSource(指定文件路径)

3.1) 指定文件路径为当前项目下resources文件夹中的csv文件.

在这里插入图片描述在这里插入图片描述

3.2) 指定文件路径为本地任意文件夹下的csv文件.

在这里插入图片描述

4) 动态参数

4.1) 单参数

参数为数据来源的方法名,如果不指定数据来源,则默认找根用例同名的静态方法.

在这里插入图片描述
4.2) 多参数

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CDH 之 Sentry 安装失败 Unable to find the MySQL JDBC driver

安装报错如下&#xff1a; 详细日志&#xff1a; Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driverat com.cloudera.cmf.service.hive.HiveMetastoreDbUtil.countTables(HiveMetastoreDbUtil.java…

stm32GPIO点亮led的小发现

偶然发现点亮led的小困惑&#xff0c;现在解决了。我们知道stm32中&#xff0c;GPIO端口的内部一般是接高电平&#xff08;3.3v&#xff09;&#xff0c;其外部就是我们肉眼所看到的PA1等标号。 1、写法一 led的正极接3.3v,这样当A1引脚输出低电平0&#xff08;即GPIO_ResetBi…

vs中编译时出现error LNK1104: 无法打开文件*.exe

因为此时有一个VS工程在运行了&#xff0c;将其关闭就可以了。 参考&#xff1a;vs中编译时出现error LNK1104: 无法打开文件*.exe

云原生|kubernetes|centos7下的kubeadm部署的集群内在线部署kubesphere(外部etcd)

前言&#xff1a; 本文将主要就在centos7操作系统下已有的一个利用kubeadm部署的集群内在线安装kubesphere做一个介绍&#xff0c;该kubernetes集群是使用的etcd外部集群。 kubernetes集群的搭建本文不做过多介绍&#xff0c;具体的搭建流程见我的博客&#xff1a; 云原生|k…

卷积层|Convolution|知识补充

CNN中增加了Convolution层和Pooling层&#xff1b; CNN中层的连接顺序是“Convolution-ReLu-Pooling”。 全连接层存在的问题&#xff1a; 数据的形状被“忽视”了&#xff0c;比如&#xff0c;输入的数据是一个三维的图像信息&#xff0c;但是在向全连接层输入时&#xff0c;…

【样式 支付下单 弹窗】静态页面,订单结算,确认支付,付款,收款方式

效果图展示 uview 2.0 uniapp <template><view class""><u-popup :show"show" close"close" :round"10" closeable :closeOnClickOverlayfalse><view class"pop"><view class"title&q…

CB2401与RFX2401C的兼容区别对比

PIN TO PIN直接兼容RFX2401C的单片射频收发芯片&#xff0c;可支持BT、BLE、ZIGBEE、ISM 2.4G非标协议。CB2401架构集成了 PA、LNA、发送和接收开关电路&#xff0c;输出功率和通信频道可以通过程序进行配置。 由于该芯片有非常优越的性能&#xff0c;高灵敏度和效率&#xff0…

智能饮品机器人来跨界,点赋科技实现交叉经营

近年来&#xff0c;随着科技的不断进步&#xff0c;智能机器人在各个领域得到了广泛应用。其中&#xff0c;智能饮品机器人成为了一个备受关注的创新点。点赋科技通过将机器人技术和饮品业务相结合&#xff0c;实现了跨界交叉经营&#xff0c;给消费者带来了全新的体验。 传统的…

Elasticsearch:使用 Elasticsearch 矢量搜索和 FastAPI 构建文本搜索应用程序

在我的文章 “Elastic&#xff1a;开发者上手指南” 的 “NLP - 自然语言处理及矢量搜索”&#xff0c;我对 Elastic Stack 所提供的矢量搜索有大量的描述。其中很多的方法需要使用到 huggingface.co 及 Elastic 的机器学习。这个对于许多的开发者来说&#xff0c;意味着付费使…

360手机 360手机刷机最高安卓版本参考

360手机 360手机刷机最高安卓版本参考 参考&#xff1a;360手机-360刷机360刷机包twrp、root 360刷机包360手机刷机&#xff1a;360rom.github.io 【360手机(最高)安卓版本】 以下列举为常见360手机机型&#xff1b;其它早期系列&#xff0c;一般为Android4-6左右360手机UI界…

AutoHotKey面向对象编程

文章目录 **初步认识**类和继承枚举属性和For循环数组和映射 初步认识 在AHK中&#xff0c;对象就是一种内部封装了属性和方法的变量&#xff0c;而和常见的面向对象编程语言不同的是&#xff0c;这里面的属性和方法是可以动态添加的。下面举一个最简单的例子 person : {} …

vi/vim 如何在PowerShell里粘贴内容

vi/vim 如何在PowerShell里粘贴内容 Shift 鼠标右键 Vi/Vim 有两种主要的模式&#xff1a;命令模式和插入模式。 要进入命令模式&#xff0c;只需按下英文输入状态下的冒号&#xff08;:&#xff09;键。一旦进入命令模式&#xff0c;您可以在底部的命令行中输入各种命令。例…

【实战】爬虫风险业务防控 | 国际航班上,小“票代”在疯狂倒卖高价票

目录 乘坐国际航班&#xff0c;躲不开的“票代” 小“票代”的网络爬虫与高价票 某公司国际航班遭遇大量爬虫攻击 基于爬虫风险的分析与防控建议 顶象防御云业务安全情报中心监测发现&#xff0c;某航空国际航班&#xff0c;遭遇恶意网络爬虫的持续攻击。高峰时期&#xff…

C#Winform抽屉式导航栏实例讲解

Winform在UI界面设计时不如WPF灵活,如实现抽屉式导航栏功能不是很容易。 本文讲解如何采用简单代码量较少的实现该功能。 先上效果: 项目过程: 首先创建winform项目 在项目中添加对应的控件,控件列表如下: 代码如下: using System; using System.Collections.Gen…

【openeuler】openEuler kernel 技术分享 - 第2期 - 从ARM和RISC-V架构看体系结构对Linux操作

openEuler kernel 技术分享 - 第2期 - 从ARM和RISC-V架构看体系结构对Linux操作系统的支持_哔哩哔哩_bilibili The RISC-V Reader: An Open Architecture Atlas http://riscvbook.com/chinese/RISC-V-Reader-Chinese-v2p1.pdf

深入浅出设计模式 - 状态模式

博主介绍&#xff1a; ✌博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家✌ Java知识图谱点击链接&#xff1a;体系化学习Java&#xff08;Java面试专题&#xff09; &#x1f495;&#x1f495; 感兴趣的同学可以收…

Day05

目录 1、编写mybatis插件&#xff0c;实现字段自动填充 注意 2、ThreadLocal的简单使用 3、问题&#xff1a;添加员工语句执行成功&#xff0c;但数据库中未添加新员工 4、问题&#xff1a;foreach 1、编写mybatis插件&#xff0c;实现字段自动填充 如何编写插件 Interc…

Jmeter之BeanShell Assertion自定义断言

在JMeter性能测试工具中&#xff0c;BeanShell Assertion是一种强大而灵活的自定义断言方法。 它允许用户通过编写BeanShell脚本来验证服务器返回的响应数据&#xff0c;从而确保系统在各种负载下的稳定性和可靠性。 无论您是初学者还是有经验的专业人士&#xff0c;使用Bean…

Element ui 取消点击空白处弹框关闭的效果

目录 属性&#xff1a; 描述 属性&#xff1a; element组件库的Dialog对话框默认是可以通过点击 modal 关闭 Dialog&#xff0c;即点击空白处弹框可关闭。 描述 在 el-dialog中close-on-click-modal含义是&#xff1a;点击空白处是否关闭&#xff0c;默认true&#xff1b;如…

python实现固定资产梳理的办法

一、需求&#xff1b; 需求&#xff1a;实现xxx地固定资产的计算以及梳理 1.盘点资产&#xff0c;通过excel表格设计了不同的区域&#xff0c;进行每个区域的资产的计数工作&#xff0c;成为了一个登记事项 2.后续形成文本汇报工作&#xff0c;梳理内容 3.需求把表格中同类…