JUnit5 【最实用最简洁】

news2025/1/13 17:42:09

JUnit5

文章目录

  • JUnit5
    • 一、JUnit 的相关技术
    • 二、参数化
    • 三、给测试用例指定顺序
    • 四、断言
    • 五、测试套件

安装依赖:在Maven库中安装
image.png

为什么学了 Selenium 还要学 JUnit?
1、JUnit5 是单元测试框架,拿着一个技术写自动化测试用例(Selenium3)
2、Selenium 是自动化测试框架,拿着一个技术管理已经编写好的测试用例(JUnit5)

一、JUnit 的相关技术

JUnit 是针对 java 的一个单元测试框架。
主要核心学习的“注解”:

  1. @ Test:表示当前的这个方法是一个测试用例
  2. @ Disabled :把测试用例进行忽略
  3. @ BeforeAll,@ AfterAll:最开始执行,和最后执行;在所有测试用例运行之前跑对应的方法,在所有测试用例之后跑对应的方法(类似于打开浏览器,关闭浏览器)
  4. @ BeforeEach,@ AfterEach:在每一个测试用例之前跑对应的方法,在每一个测试用例之后跑对应的方法

@Test 注解这里的方法需要注意的是需要用 public,如果写出其他会报错

public class JunitTest {
    @Test
    public void Test01() {
        System.out.println("这是一个测试用例");
    }
}

@ Disabled
image.png

其他注解类似,不再赘述

注意:在这些注释中需要导入的是同一个包,如果导入的包不正确也会报错,这是容易出错的地方,而且出来问题,程序也是不会提示错误的。
90fdcbdd48f3614e906b7ceb65f77cd.png

二、参数化

首先导入依赖:
image.png

参数化分为:
1、单独参数

@ParameterizedTest
@ValueSource(ints = {1, 2, 3})
void Test04(int num) {
System.out.println(num);
}

2、CSV获取参数(需要创建csv文件在 Resource 目录下)

@ParameterizedTest
    @CsvFileSource(resources = "test01.csv")
    void Test05(String name) {
        System.out.println(name);
    }

3、方法获取参数

	@ParameterizedTest
    @MethodSource("Generator")
    void Test07(int num, String name) {
        System.out.println(num + ":" + name);
    }

    public static Stream<Arguments> Generator() {
        return Stream.of(Arguments.arguments(
                1, "张三",
                2, "李四"
        ));
    }

4、多参数
这里面 @CsvSource 里面的参数是不确定什么类型的,只有下面方法传参的时候才能确定类型

	@ParameterizedTest
    @CsvSource({"1,2,3,''"}) // 需要在方法里面传递类型参数,才能确定死什么类型
    void Test08(String x,int y,String z,String q) {
        System.out.println(x);
        System.out.println(y);
        System.out.println(z);
        System.out.println(q);
    }

注意:传 空 字符串的时候,只能用 String 类型。

再次强调,里面的依赖需要导入正确,如果发现语法都没有问题报错,就可以是依赖导入的不对,可以检查一下依赖是否导入正确

三、给测试用例指定顺序

这里需要用的的注解是 @TestMethodOrder(MethodOrderer.OrderAnnotation.class) ,然后再 @Test 方法加上 @Order(执行顺序)

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class JunitTest02 {
    @Order(3)
    @Test
    public void A() {
        System.out.println("这是测试用例A");
    }
    @Order(1)
    @Test
    public void B() {
        System.out.println("这是测试用例B");
    }
    @Order(2)
    @Test
    public void C() {
        System.out.println("这是测试用例C");
    }
}

image.png

另外还有个注解 @TestMethodOrder(MethodOrderer.Random.class) 这是随机注解,随机指定顺序的,与@Order()里面参数指定的顺序没有任何关系。

四、断言

  • 断言相等
  • 断言不相等
  • 断言为空
  • 断言不为空
// 断言不相等
Assertions.assertNotEquals(1,num);

//断言相等
Assertions.assertEquals(1,num); // (预期结果,实际结果)

// 断言为null
String str = null;
Assertions.assertNull(str);

// 断言不为null
String str = "null1";
Assertions.assertNull(str);

其他方法也是类似,利用 Assertions类找到对应的方法。

五、测试套件

核心注解:
1、 @Suite (使用套件必须加这个);
2、@SelectClasses();
3、@SelectPackages()

//@SelectClasses({JunitTest.class,JunitTest03.class,JunitTest02.class}) // 通过class测试用例运行
@Suite
@SelectPackages({"JunitPackage02","JunitPackage01"}) // 通过包选择
public class RunSuite {
}

使用方法 @Suite && @Select…

注意:指定包添加套件的前提
1、所有类文件的命名都要以 Test、Tests 结尾;
2、所有的测试单元都要使用 @Test 注解

image.png
提醒:特别注意依赖的导入,肯能出现报错的地方是因为导入的依赖不对

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

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

相关文章

云上攻防-云原生篇Docker安全系统内核版本漏洞CDK自动利用容器逃逸

文章目录 云原生-Docker安全-容器逃逸&内核漏洞云原生-Docker安全-容器逃逸&版本漏洞-CVE-2019-5736 runC容器逃逸-CVE-2020-15257 containerd逃逸 云原生-Docker安全-容器逃逸&CDK自动化 云原生-Docker安全-容器逃逸&内核漏洞 细节部分在权限提升章节会详解&…

【肌电信号】OpenSignals使用方法 --- 肌电信号采集及导入matlab

一、 多通道采集教学 1. 数据线连接 将PLUX设备通过USB或蓝牙与电脑连接&#xff0c;注意确认在几号通道接线。 2.实时数据采集可视化 进行设置。需要在软件中选择你的PLUX设备&#xff0c;并配置相关的参数&#xff0c;如采样率、分辨率、信号类型等 3 支持数据回放和…

zabbix监控实战2

4、zabbix添加监控项 nginx监控 在server上安装nginx 添加模板 浏览图形 mysql监控 zabbix自带mysql模板&#xff0c;所以可以在server1上直接做 创建数据库连接用户 percona数据库模板 清理掉mysql的模块链接 安装并配置好percona的数据库模板 测试脚本 删除tmp下的缓存文…

短链接系统如何设计

shigen坚持日更的博客写手&#xff0c;擅长Java、python、vue、shell等编程语言和各种应用程序、脚本的开发。坚持记录和分享从业两年以来的技术积累和思考&#xff0c;不断沉淀和成长。 今天给大家带来的文章是&#xff1a;《短链接系统如何设计》。在开始之前&#xff0c;先让…

SpringBoot讲义

SpringBoot 文档更新日志 版本更新日期操作描述v1.02021/11/14A基础篇 前言 ​ 很荣幸有机会能以这样的形式和互联网上的各位小伙伴一起学习交流技术课程&#xff0c;这次给大家带来的是Spring家族中比较重要的一门技术课程——SpringBoot。一句话介绍这个技术&#xff0c;…

【基于Kmeans、Kmeans++和二分K均值算法的图像分割】数据挖掘实验三

文章目录 Ⅰ、项目任务要求任务描述&#xff1a;主要任务要求&#xff1a; II、实现过程数据集描述实现描述具体实现过程 III、完整代码代码①代码② Ⅰ、项目任务要求 任务描述&#xff1a; 图像分割是图像处理和计算机视觉中重要的一环&#xff0c;在实际生活中得到了广泛的…

【C++】:关键字+命名空间+输入输出+缺省参数+函数重载+引用

【本节目标】 C关键字命名空间C输入&输出缺省参数函数重载引用 C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式等 熟悉C语言之后&#xff0c;对C学习有一定的帮助&#xff0c;本章节主要目标&#xff…

2023年天猫淘宝双11红包活动入口是什么时候开始至什么时间结束?

​2023年淘宝天猫双11超级红包活动领取时间是从2023年10月24日20:00开始至11月11日23:59结束&#xff0c;淘宝天猫双十一活动时间内每天都可以领取1超级红包最高可得23888元。 2023年天猫淘宝双十一红包使用时间分为2个阶段&#xff1a;第一阶段是从2023年10月31日20:00开始至…

计算机指令、机器码

目录 背景 在软硬件接口中&#xff0c;CPU 帮我们做了什么事&#xff1f; 从编译到汇编&#xff0c;代码怎么变成机器码&#xff1f; 解析指令和机器码 总结延伸 背景 上大学的时候&#xff0c;我们系里教 C 语言程序设计的老师说&#xff0c;他们当年学写程序的时候&…

3.Python-用Python实现MySQL数据库的增删改查

题记 用python实现mysql数据库的增删改查&#xff0c;以下是具体的代码和操作步骤 安装flask模块 pip install flask 安装mysql.connector模块 pip install mysql-connector-python 编写app.py文件 app.py文件如下&#xff1a; 为什么显示不完整&#xff1f;&#xff1f;&am…

【Spring】事务传播机制

事务传播机制 一. 事务传播机制是什么二. 为什么需要事务传播机制三. 事务传播机制有哪些四. Spring 事务传播机制演示1. ⽀持当前事务&#xff08;REQUIRED&#xff09;2. 不支持当前事务&#xff08;REQUIRES_NEW&#xff09;3. 不⽀持当前事务&#xff0c;NEVER 抛异常4. NE…

订单型企业经营分析指标大全(ODOO15/16)

ODOO-ERP搭建完成之后&#xff0c;我们重点是帮客户建立经营分析能力&#xff0c;以下是针对订单型企业的经营分析指标&#xff0c;涵盖业务运营的监控、资产构成、利润、盈亏点计算、资产运营效率等各方面&#xff0c;并且持续完善。 有些企业不重视&#xff0c;觉得自己企业小…

WebAPI+EF连接SQL Server数据库

右击解决方案-添加-新建项目-选择“类库&#xff08;.NET Framework&#xff09;”,新建的项目取名叫WebApi1.EF 添加EF&#xff1a; 新建一个ADO实体数据模型 选择DBFirst 数据源选择MySql 填写数据库地址及账号密码 选择实体框架版本 选择在数据库中的表User 到此配置完成&am…

对称加密和非对称加密以及CA证书

对称加密 对称加密只用到了公匙,这个公匙是消息的发送方和消息的接收方共享的,也就是消息发送方使用这个公匙对消息加密,然后接收方使用公匙对消息解密,最典型的例子比如像 encrypt 加密,比如我们有个 springboot 应用,需要对 application.yml 文件里的密码做加密,我们…

操作系统备考学习 day8 (2.4.1 ~ 2.4.4)

操作系统备考学习 day8 第二章 进程与线程2.4 死锁2.4.1 死锁的基本概念死锁产生的必要条件死锁什么时候会发生死锁的处理策略 2.4.2 死锁预防破坏互斥条件破坏不剥夺条件破坏请求和保持条件破坏循环等待条件 2.4.3 避免死锁银行家算法 2.4.4 死锁的检测和解除死锁的检测死锁的…

faster python之ctypes调用so/dll

目录 .so和.dll文件将go代码编译为动态链接库将C代码编译成动态链接库 ctypes库基础数据类型使用方法基本数据类型数组类型指针类型结构体类型嵌套结构体结构体数组结构体指针结构体指针数组 ctypes加载DLL的方式1. 使用 CDLL 类2. 使用 WinDLL 类&#xff08;Windows特定&…

【LeetCode高频SQL50题-基础版】打卡第8天:第41~45题

文章目录 【LeetCode高频SQL50题-基础版】打卡第8天&#xff1a;第41~45题⛅前言好友申请II&#x1f512;题目&#x1f511;题解 2016年的投资&#x1f512;题目&#x1f511;题解 部门工资前三高的所有员工&#x1f512;题目&#x1f511;题解 修复表中的名字&#x1f512;题目…

深入JTS事务引擎:理论与实践相结合,掌握高效事务管理的秘诀

事务是可靠应用程序的构建块 如果您阅读过任何有关 J2EE 的介绍性文章或者书籍&#xff0c;那么就会发现&#xff0c;只有一小部分资料是专门针对 Java Transaction Service&#xff08;JTS&#xff09;或 Java Transaction API&#xff08;JTA&#xff09;的。这并不是因为 J…

[补题记录] Atcoder Beginner Contest 295(E)

URL&#xff1a;https://atcoder.jp/contests/abc295 目录 E Problem/题意 Thought/思路 Code/代码 E Problem/题意 给定长度为 N 的数组 A。进行如下操作&#xff1a; 若 Ai 0&#xff0c;将 Ai 等概率地变为 1 ~ M 中的任意一个数&#xff1b;对 A 排序&#xff1b; …

SQL及数据库基础知识点总结

一. SQL&#xff08;Structured Query Language&#xff09;&#xff1a; 结构化查询语言。SQL语法不区分关键字的大小写&#xff0c;多条SQL语句必须以&#xff1b;分隔。 二. SQL的作用&#xff1a; SQL可以访问和处理数据库&#xff0c;包括数据的增删改查&#xff08;插…