软件测试教程 自动化测试之Junit框架

文章目录

  • 1. 什么是 Junit ?
  • 2. 常见的注解
    • 2.1 @Test
    • 2.2 @BeforeAll,@AfterAll
    • 2.3 @BeforeEach,@AfterEach
  • 3. 测试用例顺序指定
  • 4. 参数化
    • 4.1 单个参数
    • 4.2 多个参数
    • 4.3 通过方法生成
  • 5. 测试套件
  • 6. 断言
    • 6.1 断言相等
    • 6.2 断言不相等
    • 6.3 断言为空
    • 6.4 断言不为空

1. 什么是 Junit ?

Junit 是 Java 的单元测试框架


在 Java 项目中加入 Junit 依赖

		<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.1</version></dependency><!-- 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><!-- 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><!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine --><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.9.1</version><scope>test</scope></dependency>

2. 常见的注解

2.1 @Test

  • @Test:表名当前的方法是一个测试用例
import org.junit.jupiter.api.Test;public class JunitTest {@Testvoid Test01() {System.out.println("========这是第一个测试用例=======");}@Testvoid Test02() {System.out.println("========这是第二个测试用例=======");}
}

在这里插入图片描述

2.2 @BeforeAll,@AfterAll

  • @BeforeAll:当前 class 中所有测试用例执行之前自动执行
  • @AfterAll:当前 class 中所有测试用例执行结束之后自动执行
	@BeforeAllstatic void Start() {System.out.println("开始测试");}@AfterAllstatic void End() {System.out.println("结束测试");}

在这里插入图片描述

2.3 @BeforeEach,@AfterEach

  • @BeforeEach:当前 class 中每一个测试用例执行结束之前执行一次
  • @AfterEach:当前 class 中每一个测试用例执行结束之后执行一次
@BeforeEachvoid StartV1() {System.out.println("开始执行");}@AfterEachvoid EndV1() {System.out.println("执行结束");}

在这里插入图片描述

3. 测试用例顺序指定

  • @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
    在这里插入图片描述
    在这里插入图片描述

4. 参数化

4.1 单个参数

	//单参数@ParameterizedTest@ValueSource(ints = {1,2,3,4})void Test03(int x) {System.out.println("接收参数是 x = " + x);}

单参数有它的弊端,只能接收一种类型的参数,对应的 Test 方法,只能接收一个参数

4.2 多个参数

	//多参数@ParameterizedTest@CsvSource({"'张三','18'"})void Test04(String name, int age) {System.out.println(name + "今年 " + age + " 岁");}

参数化对应的注解上面如果写了Test,测试用例就会执行两次
其中一次就会报错,因为 Test 和 方法结合,没有找到参数,就会报错


	//多参数,读取文件中的数据,进行操作@ParameterizedTest@CsvFileSource(resources = "test01.csv")void Test05(String name, int age) {System.out.println("name:" + name + ", age:" + age);}

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

4.3 通过方法生成

	public static Stream<Arguments> Generate() {return Stream.of(Arguments.arguments("张三", 13),Arguments.arguments("李四",14));}//通过方法生成测试数据@ParameterizedTest@MethodSource("Generate")void Test06(String name, int age) {System.out.println("姓名:" + name + "年龄:" + age);}

在这里插入图片描述

5. 测试套件

  • @Suite

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

6. 断言

6.1 断言相等

//断言相等@Testvoid Test07() {int x = 10;int y = 20;Assertions.assertEquals(x, y);}

在这里插入图片描述

6.2 断言不相等

	//断言不相等@Testvoid Test07() {int x = 10;int y = 20;Assertions.assertNotEquals(x, y);}

在这里插入图片描述

6.3 断言为空

	//断言为空@Testvoid Test07() {int x = 10;int y = 20;String tmp = null;Assertions.assertNull(tmp);}

在这里插入图片描述

6.4 断言不为空

	//断言不为空@Testvoid Test07() {int x = 10;int y = 20;String tmp = null;Assertions.assertNotNull(tmp);}

在这里插入图片描述

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

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

相关文章

山东省大数据局副局长禹金涛一行莅临聚合数据走访调研

3月19日&#xff0c;山东省大数据局党组成员、副局长禹金涛莅临聚合数据展开考察调研。山东省大数据局数据应用管理与安全处处长杨峰&#xff0c;副处长都海明参加调研&#xff0c;苏州市大数据局副局长汤晶陪同。聚合数据董事长左磊等人接待来访。 调研组一行参观了聚合数据展…

软件设计师笔记

计算机 运算器组成&#xff1a;算术逻辑单元(ALU)、累加寄存器(AC)、数据缓冲寄存器(DR)、状态条件寄存器()等组成。 控制器组成&#xff1a;指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、指令译码器(ID)。 最小数据单位&#xff1a;bit 最小存储单位: byte n进制 转 1…

蓝桥杯单片机备战——关于573问题的填坑

一、遇到的问题 还记得我前面在封装继电器外设的时候遇到的这个问题嘛&#xff0c;当时我怀疑的是138译码器在切换通道的时候会出现其他暂态导致已经锁定的573解锁。 其实不然&#xff0c;之所以会这样还是因为代码问题&#xff0c;也可以说是573反应时间太快了。下面我就分析…

SpringBoot自定义starter开发:使用属性配置设置功能参数

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,计算机系列(火速更新中) 💭 格言:种一棵树最好的时间是十年前,其次是现在 🏡动动小手,点个关注不迷路,…

麒麟系统中使用nginx发布项目

1. 安装Nginx sudo apt-get update #进行所有安装操作前都要执行这一句 sudo apt install nginx #出现询问就Yes参考具体 Nginx—在linux的ubuntu系统上的安装使用 2. 修改发布文件 将打包好的dist文件夹中的所有文件覆盖下面这个文件夹中的所有文件 如果出现没有权限替…

openEuler 22.03(华为欧拉)一键安装 Oracle 19C RAC(19.22) 数据库

前言 Oracle 一键安装脚本&#xff0c;演示 openEuler 22.03 一键安装 Oracle 19C RAC 过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&#xff1a;Shell脚本安装Oracle数据库…

OPPO案例 | Alluxio在DataAI湖仓一体的实践

分享嘉宾&#xff1a; 付庆午-OPPO数据架构组大数据架构师 在OPPO的实际应用中&#xff0c;我们将自研的Shuttle与Alluxio完美结合&#xff0c;使得整个Shuttle Service的性能得到显著提升&#xff0c;基本上实现了性能翻倍的效果。通过这一优化&#xff0c;我们成功降低了约一…

搭建自己的chatgpt-web(nextchat)

参考&#xff1a; 【好玩儿的Docker项目】任何地方无障碍快速访问&#xff01;ChatGPT Next Web——一键免费部署你的私人 ChatGPT 网页应用 | 爱玩实验室

BetterDisplay Pro:让屏幕管理更高效、更便捷

BetterDisplay Pro是一款功能强大的显示器管理软件&#xff0c;适用于Windows和Mac操作系统。其主要功能包括显示器校准、自动校准、多种预设模式、手动校准以及可视化数据等。 具体而言&#xff0c;这款软件可以根据用户的需求和环境条件调整显示器的颜色、亮度和对比度等参数…

C++面向对象:const的使用

目录 常变量 常量指针与指针常量 常量与引用 常量返回值 常数据成员 常变量 在C中&#xff0c;推荐使用const对象或 enum class 定义常量&#xff0c;而不使用#define预处理器。 &#xff08;1&#xff09;类型安全 #define宏定义只是一个简单的文本替换&#xff0c;不携…

53、简述GCN、NIR、FMIR技术在脑机BCI的发展调查[什么?你咋也叫王富贵?]

最近在搞GCN处理EEG&#xff0c;调查了十几篇文献&#xff0c;总结了一些东西&#xff0c;和学生分享一下&#xff0c;此处只分享一些较为浅显的知识。如下&#xff1a; GCN在其他领域的应用&#xff1a; 1、计算机视觉&#xff1a; 图卷积神经网络在计算机视觉中的应用包括图…

好用的客服快捷回复软件推荐

在当今快节奏的商业环境中&#xff0c;客户服务的效率和质量已经成为企业成功的关键因素之一。对于客服工作人员来说&#xff0c;面对海量的客户咨询和问题解答&#xff0c;如何快速而准确地回复&#xff0c;成为了他们日常工作中的一大挑战。选择一款好用的快捷回复工具是非常…

刷题DAY30 | LeetCode 332-重新安排行程 51-N皇后 37-解数独

332 重新安排行程&#xff08;hard&#xff09; 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&…

SSC9211_USB-CAM解决方案

一、方案描述 SSC9211是一种用于USB-CAM应用程序跟场景的高度集成的SOC产品。平台本身基于ARM层-A7双核&#xff0c;内置16位&#xff0c;64M的DDR2&#xff0c;集成了图像传感器接口、高级ISP、高性能JPEG编码器和其他丰富的外设接口。支持单&#xff0c;双 MIPI sensor方案&…

目标检测——植物病害数据集

植物病害是植物正常状态的偏离&#xff0c;会破坏或改变其生命功能。植物病害会导致严重的产量损失&#xff0c;全球潜在损失估计高达16%。因此&#xff0c;研究植物病害以及开发诊断和治疗它们的方法是植物病理学领域的重要研究内容。 有效识别植物病害对于采取有效的控制措施…

Go语言学习Day1:什么是Go?

名人说&#xff1a;莫道桑榆晚&#xff0c;为霞尚满天。——刘禹锡&#xff08;刘梦得&#xff0c;诗豪&#xff09; 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 1、走近Go①Go语言的Logo②Go语言的创始人③Go语…

八大排序算法之希尔排序

希尔排序是插入排序的进阶版本&#xff0c;他多次调用插入排序&#xff0c;在插入排序上进行了改造&#xff0c;使其处理无序的数据时候更快 核心思想&#xff1a;1.分组 2.直接插入排序&#xff1a;越有序越快 算法思想&#xff1a; 间隔式分组&#xff0c;利用直接插入排序…

【Python】Python中装饰器和魔法方法的区别

在Python中&#xff0c;装饰器&#xff08;Decorators&#xff09;和魔法方法&#xff08;Magic Methods&#xff09;是两种不同的高级特性&#xff0c;分别服务于不同的目的。 装饰器 (Decorators) 装饰器是一种强大的工具&#xff0c;它可以修改或增强函数、方法或类的行为…

IoT物联网可以带来什么?——青创智通

工业物联网解决方案-工业IOT-青创智通 随着科技的飞速发展&#xff0c;IoT物联网已逐渐渗透到我们生活的方方面面&#xff0c;它以其独特的方式&#xff0c;将各种设备、系统和人连接起来&#xff0c;为我们带来了前所未有的便利和惊喜。那么&#xff0c;IoT物联网究竟可以为我…

linux下docker容器的使用

1、根据已有镜像images创建容器 1.1、查看镜像 如果是接手的别人的项目&#xff0c;需要从以往的images镜像中创建新容器&#xff0c;使用命令查看当前机器上的docker镜像&#xff1a; docker images1.2、创建容器 使用docker run 根据images镜像名创建容器&#xff0c;命令…