【软件测试】JUnit

Junit 是一个用于 Java 编程语言的单元测试框架,Selenium是自动化测试框架,专门用于Web测试

本篇博客介绍 Junit5

文章目录

  • Junit 使用
  • 语法
    • 注解
    • 参数
    • 执行顺序
    • 断言
    • 测试套件

Junit 使用

本篇博客使用 Idea集成开发环境

首先,创建新项目,注意选择 Maven

在这里插入图片描述
创建新类 —— JunitTest

在这里插入图片描述
使用 Junit 相关语法,需要添加依赖
在 pom.xml 中添加相关依赖
相关依赖可以从Maven官网获取
在这里插入图片描述

<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.1</version>
</dependency>

注意重新加载 Maven,下载相应的包
至此就可以使用基本的 Junit 语法


语法

注解

Junit 使用注解来定义测试用例,设置测试环境和执行一些操作

@Test
标记一个方法为测试方法。JUnit 会自动识别并执行这个方法。

在这里插入图片描述
点击特定测试用例左侧的运行图标,可以只执行该测试用例,如 Test01 和 Test02 左侧的图标
在这里插入图片描述
点击 JunitTest ,类旁边的图标,会执行该类中的所有测试用例
在这里插入图片描述


@Disabled
使用该注解,执行全部测试用例时,会跳过执行该测试用例

在这里插入图片描述


@BeforeAll
使用该注解的方法要是 static
使用该注解的方法会在所有测试用例执行前执行,不论是单个执行还是全部执行


@AfterAll
使用该注解的方法要是 static
使用该注解的方法会在所有测试用例执行后执行,不论是单个执行还是全部执行


@BeforeEach
使用该注解的方法会在每个测试用例执行前执行


@AfterEach
使用该注解的方法会在每个测试用例执行后执行

参数

使用参数,需要引入依赖

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params -->
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</artifactId><version>5.9.1</version>
</dependency>

使用参数要带上@ParameterizedTest

  • 单参数

使用@ValueSource指定测试用例

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

因为有3个参数,所以会执行三次

在这里插入图片描述
同样也可以传字符串

@ParameterizedTest
@ValueSource(strings = {"1", "2", "3"})
void Test05(String str){System.out.println("Test05 string = " + str);
}

在这里插入图片描述


  • CSV多参数

通过 ""指定多个参数,多组参数用分割

@ParameterizedTest
@CsvSource({"张三, 20, 男","李四, 24, 男","田六, 18, 女"})
void Test08(String name, int age, String gender){System.out.println("姓名: " + name + " 年龄: " + age + " 性别: " + gender);
}

在这里插入图片描述


  • 通过CSV文件获取参数

Junit规定,通过文件传参的文件后缀必须以.csv结尾
一行为一次测试用例输入
test01.csv
在这里插入图片描述
测试代码:

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

在这里插入图片描述


  • 通过方法获取参数 & 多参数
public static Stream<Arguments> Generator() {return Stream.of(Arguments.arguments(1, "张三"),Arguments.arguments(2, "李四"),Arguments.arguments(3, "王五"));
}
@ParameterizedTest
@MethodSource("Generator")
void Test07(int num, String name){System.out.println(num + ":" + name);
}

在这里插入图片描述

执行顺序

不指定执行顺序的情况下,除了 Before 和 After 系列,其他测试用例的执行顺序根据不同解释器不同的算法会有不同的执行顺序。
不过我们也可以指定执行顺序
方法是在测试类使用注释@TestMethodOrder,然后在测试用例使用@Order

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class JunitTest {@Order(1)@Testvoid Test01(){System.out.println("这是JunitTest里面的Test01");}@Order(3)@Testvoid Test02(){System.out.println("这是JunitTest里面的Test02");}@Order(2)@ParameterizedTest@ValueSource(ints = {1, 2, 3})void Test04(int num){System.out.println("Test04 num = " + num);}
}

通过Order指定顺序
在这里插入图片描述

断言

断言用于验证测试结果是否符合预期。JUnit 提供了多种断言方法,可以用于检查值是否相等,是否为真,是否为假等。

以下是常用的断言方法:

常用断言方法

  1. assertEquals(expected, actual)
    • 检查两个值是否相等,第一个参数是预期值,第二个是实际值
import static org.junit.Assert.assertEquals;
@Test
public void Test() {int sum = 2 + 3;Assertions.assertEquals(6, sum); // 验证 2 + 3 是否等于 6
}

结果当然是错误的,运行结果会打印出预期值和实际值方便调试
在这里插入图片描述

  1. assertTrue(condition)
    • 检查条件是否为真
import static org.junit.Assert.assertTrue;@Test
public void testIsPositive() {int number = 10;Assertions.assertTrue(number > 0); // 验证 number 是否大于 0
}
  1. assertNull(object)
    • 检查对象是否为 null
import static org.junit.Assert.assertNull;@Test
public void testObjectIsNull() {Object obj = null;Assertions.assertNull(obj); // 验证 obj 是否为 null
}
  1. assertArrayEquals(expectedArray, actualArray)
    • 检查两个数组是否相等
import static org.junit.Assert.assertArrayEquals;@Test
public void testArrayEquality() {int[] expected = {1, 2, 3};int[] actual = {1, 2, 3};Assertions.assertArrayEquals(expected, actual); // 验证两个数组是否相等
}

上述方法都有相反的断言,如 assertEquals 相反的为 assertNotEquals

测试套件

要使用测试套件,需要添加如下两个依赖

<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
<dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-suite</artifactId><version>1.9.1</version>
</dependency>
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.9.1</version><scope>test</scope>
</dependency>

测试套接(Test Suite) 是一个用于组织和运行多个测试用例的集合。在软件测试中,测试套件通常用于将相关的测试用例结合在一起,以便能够方便地执行和管理

  1. 测试套件的定义

    • 测试套件 是一组测试用例的集合,可以是一个或多个测试类的集合。通过使用测试套件,可以一次性运行所有相关的测试用例,而不需要逐个运行。
    • 测试套件通常用于集成测试或系统测试,可以确保应用程序的不同部分能够协同工作。
  2. 使用测试套件的好处

    • 组织性:将相关测试组织在一起,便于管理和维护。
    • 效率:可以一次性运行多个测试,节省时间。
    • 可重用性:可以在不同的测试环境中重用测试套件。
    • 可读性:提高代码的可读性,使测试代码结构更加清晰。

介绍两种最常用的测试套件

根据 Class 运行

需要在测试类上添加注释@Suite@SelectClasses

@Suite
@SelectClasses({Test02.class, Test01.class})
public class RunTest {}

上述代码表示,先运行 Test02 的测试用例,再运行 Test01 的测试用例
在这里插入图片描述

根据 Package 运行

需要在测试类上添加注释@Suite@SelectClasses

目录结构如下:
在这里插入图片描述

测试套件如下:

@Suite
@SelectPackages(value = {"package1", "package2"})
public class RunTest {}

以上就是本篇博客的所有内容,感谢你的阅读
如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
在这里插入图片描述

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

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

相关文章

一图解千言,了解常见的流程图类型及其作用

在企业管理、软件研发过程中&#xff0c;经常会需要进行各种业务流程梳理&#xff0c;而流程图就是梳理业务时必要的手段&#xff0c;同时也是梳理的产出。但在不同的情况下适用的流程图又不尽相同。 本文我们就一起来总结一下8 种最常见的流程图类型 数据流程图 数据流程图&…

【CTF-SHOW】Web入门 Web14 【editor泄露-详】【var/www/html目录-详】

editor泄露问题通常出现在涉及文件编辑器或脚本编辑器的题目中&#xff0c;尤其是在Web安全或Pwn&#xff08;系统漏洞挖掘&#xff09;类别中。editor泄露的本质是由于系统未能妥善处理临时文件、编辑历史或进程信息&#xff0c;导致攻击者可以通过某种途径获取正在编辑的敏感…

javaweb-mybatis之动态sql

(1).if标签 编写好方法之后&#xff0c;选中方法名&#xff0c;alt回车&#xff0c;选第一个generate statement快捷生成xml里的标签 (2).foreach标签 用于批量删除 (3)sql和include标签

架构师面试:怎样规划公司的监控架构?

大家好&#xff0c;我是君哥。 监控系统在科技公司非常重要&#xff0c;它可以让运维人员和研发人员提前发现问题、定位问题&#xff0c;进而解决问题。 在我们实际工作中&#xff0c;使用的监控往往五花八门&#xff0c;比较混乱&#xff0c;今天来聊一聊怎么规划公司的监控…

QT开发:深入掌握 QtGui 和 QtWidgets 布局管理:QVBoxLayout、QHBoxLayout 和 QGridLayout 的高级应用

目录 引言 1. QVBoxLayout&#xff1a;垂直布局管理器 基本功能 创建 QVBoxLayout 添加控件 添加控件和设置对齐方式 设置对齐方式 示例代码与详解 2. QHBoxLayout&#xff1a;水平布局管理器 基本功能 创建 QHBoxLayout 添加控件 添加控件和设置对齐方式 设置对齐…

【CTF刷题9】2024.10.19

[MoeCTF 2021]babyRCE 考点&#xff1a;关键词过滤&#xff08;绕过方法参考往期博客&#xff09; 来源&#xff1a;nssctf <?php$rce $_GET[rce]; if (isset($rce)) {if (!preg_match("/cat|more|less|head|tac|tail|nl|od|vi|vim|sort|flag| |\;|[0-9]|\*|\|\%|\&g…

京存助力北京某电力研究所数据采集

北京某电力研究所已建成了一套以光纤为主&#xff0c;卫星、载波、微波等多种通信方式共存&#xff0c;分层级的电力专用的网络通信架构体系。随着用电、配电对网络的要求提高&#xff0c;以及终端通信入网的迅速发展&#xff0c;迫切地需要高效的通信管理系统来应对大规模、复…

Kaggle竞赛——森林覆盖类型分类

目录 1. 竞赛简要2. 数据分析2.1 特征类型统计2.2 四个荒野区域数据分析2.3 连续特征分析2.4 离散特征分析2.5 特征相关性热图2.6 特征间的散点关系图 3. 特征工程3.1 特征组合3.2 连续特征标准化 4. 模型搭建4.1 模型定义4.2 绘制混淆矩阵和ROC曲线4.3 模型对比与选择 5. 测试…

python爬虫案例——selenium爬取淘宝商品信息,实现翻页抓取(14)

文章目录 1、任务目标2、网页分析3、代码编写3.1 代码分析3.2 完整代码1、任务目标 目标网站:淘宝(https://www.taobao.com/) 任务要求:通过selenium实现自动化抓取 淘宝美食 板块下的所有商品信息,并实现翻页抓取,最后以csv格式将数据保存至本地;如: 2、网页分析 首先…

Qt-系统文件相关介绍使用(61)

目录 描述 输⼊输出设备类 打开/读/写/关闭 使用 先初始化&#xff0c;创建出大致的样貌 输入框设置 绑定槽函数 保存文件 打开文件 提取文件属性 描述 在C/C Linux 中我们都接触过关于文件的操作&#xff0c;当然 Qt 也会有对应的文件操作的 ⽂件操作是应⽤程序必不…

wpf grid 的用法

WPF中的Grid是一种布局控件&#xff0c;可用于将子控件按照行和列的方式排列。 以下是Grid控件的用法&#xff1a; 在XAML文件中&#xff0c;添加一个Grid控件&#xff1a; <Grid> </Grid>在Grid控件中&#xff0c;添加行和列定义&#xff1a; <Grid><…

Spring Cloud-Nacos版 学习理解

注册中心 Nacos 下载安装包 bin目录输入 cmd 进入命令行&#xff0c;输入startup.cmd -m standalone 启动 浏览器输入 http://127.0.0.1:8848/nacos/index.html&#xff0c;进入启动页面 账号密码均默认nacos 服务提供者 NacosProvider、服务调用者 NacosConsumer 服务提…

第五届计算机、大数据与人工智能国际会议(ICCBD+AI 2024)

第五届计算机、大数据与人工智能国际会议&#xff08;ICCBDAI 2024&#xff09;将于2024年11月1日-3日在江西景德镇召开。本届会议由景德镇陶瓷大学主办&#xff0c;西安交通大学、暨南大学、南京邮电大学、长沙学院、景德镇学院、ELSP&#xff08;爱迩思出版社&#xff09;、E…

Python Django 数据库优化与性能调优

Python Django 数据库优化与性能调优 Django 是一个非常流行的 Python Web 框架&#xff0c;它的 ORM&#xff08;对象关系映射&#xff09;允许开发者以简单且直观的方式操作数据库。然而&#xff0c;随着数据量的增长&#xff0c;数据库操作的效率可能会成为瓶颈&#xff0c…

使用 PyTorch 构建 LSTM 股票价格预测模型

目录 引言准备工作1. 训练模型&#xff08;train.py&#xff09;2. 模型定义&#xff08;model.py&#xff09;3. 测试模型和可视化&#xff08;test.py&#xff09;使用说明模型调整结论 引言 在金融领域&#xff0c;股票价格预测是一个重要且具有挑战性的任务。随着深度学习…

Linux文件操作基础

目录 Linux文件操作基础 引入 回顾C语言文件操作 系统调用接口 open函数 read函数和write函数 close函数 模拟C语言接口 文件描述符 如何理解Linux下一切皆文件 文本读写与二进制读写 Linux文件操作基础 引入 在Linux第一章提到过&#xff0c;在Linux中&#xff0…

快速创建一个vue项目并运行

前期准备工作: 1.安装node 2.安装npm 3.设置淘宝镜像 4.全局安装webpack 5.webpack 4.X 开始&#xff0c;需要安装 webpack-cli 依赖 6.全局安装vue-cli 正文开始: 1.创建项目 ,回车 vue init webpack vue-svg > Project name vue-demo 项目名称 回车 > Pro…

电脑桌面自己变成了英文Desktop,怎么改回中文

目录 前言找到Desktop查看位置查找目标修改文件名为桌面重启电脑 或 重启 Windows 资源管理器CtrlShiftEsc 打开任务管理器找到 Windows 资源管理器重启 Windows 资源管理器 查看修改结果 前言 许多人在使用电脑的时候发现&#xff0c;我们经常使用的桌面&#xff0c;不知道因为…

安卓流式布局实现记录

效果图&#xff1a; 1、导入第三方控件 implementation com.google.android:flexbox:1.1.0 2、布局中使用 <com.google.android.flexbox.FlexboxLayoutandroid:id"id/baggageFl"android:layout_width"match_parent"android:layout_height"wrap_co…

震惊!原来贡献开源代码这么简单,分分钟上手!

文章目录 前言一、什么是 Fork 和 PR&#xff1f;1. Fork&#xff08;分叉&#xff09;2. PR&#xff08;Pull Request&#xff0c;拉取请求&#xff09; 二、两种常见的贡献代码方式1. Fork 后通过 PR 提交代码2. 直接在项目分支中修改 三、如何 Fork 和发起 Pull Request&…