Junit单元测试异常处理方法

news2024/11/24 18:29:15

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

Junit单元测试异常处理方法

  • 前言
  • 案例准备
  • 一、类方法内处理异常
  • 二、测试方法中处理异常
    • 1.try/catch/finally 语句
    • 2.@Test(expected)
    • 3.@ExpectedException


前言

提示:这里可以添加本文要记录的大概内容:

开发者在进行Java编程时会对程序中的异常进行处理。一般的,可以发生异常的方法内添加 try/catch/finally 等处理语句,在方法内部解决异常;也可以使用throw / throws 语句交由方法上一层进行解决。因此,在单元测试也应当考虑方法抛出异常的情况,对异常的处理也应当纳入单元测试框架中。JUnit提供了多种异常处理的机制,以帮助测试者验证需要处理的异常代码,本篇文章我们主要来探讨一下JUnit处理异常的方法




案例准备

提示:可结合下面实例理解异常处理方法

创建一个Caculator计算类,供测试类使用

在这里插入图片描述



由Caculator中我们主要测试除法中分母不能为0的异常处理,当分母为0时,会抛出ArithmeticException异常



创建测试类
在这里插入图片描述



一、类方法内处理异常

我们可以直接在方法中处理异常(主要由try/catch语句处理异常),然后在测试类中就不需要再处理异常,如下图所示


在这里插入图片描述


测试类中测试通过

在这里插入图片描述



二、测试方法中处理异常

我们也可以不在调用的方法内处理异常,而是由方法抛出交给测试方法类处理,在测试方法中处理异常主要有三种方式

注:测试方法中调用的方法为Caculator中的未处理异常的devide1()方法


在这里插入图片描述



1.try/catch/finally 语句

如同在类中方法一样,我们也可以直接在测试方法中使用try/catch/finally语句捕获异常

下图为例:

在这里插入图片描述



2.@Test(expected)

@Test注解中的参数expected允许测试者设置Throwable的子类,用于检测待测方法是否正确抛出异常。如针对方法divide1(),可以用下图的方法进行异常检测。该方法配置比较简单,易于使用,然而,该方法不能直接表明异常发生的位置,测试者需要进一步定位。

下图为例

在这里插入图片描述



3.@ExpectedException

Junit中的ExpectedException可以更精确地定位异常发生的位置,在应用ExpectedException类前,需要用@Rule 注解声明ExpectedException异常。然后在异常发生的位置前调用 expect 方法检测异常,此外,还可使用ExpectedException中的expectMessage方法设置异常属性信息

下图为例:

在这里插入图片描述

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

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

相关文章

【C语言】指针和数组笔试题解析(2)

【C语言】指针和数组笔试题解析(1), 这是第一篇关于sizeof与strlen在指针中的应用,而这一篇主要讲解在各种情形下的灵活运用,也是大厂中经典的面试题 第一题: int main() {int a[5] { 1, 2, 3, 4, 5 };in…

开始在 Windows 上使用 Next.js

🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 必备条件 安装 Next.js 本指南帮助你安装 Next.js Web 框架并在 Windows 上启动和运行。 Next.js 是一个框架&…

利用idea新创建maven项目时的一些基本配置

1.修改项目默认的maven仓库 file->Settings->Build 2.设置项目的jdk版本 设置完点OK即可。 同样的我们还需要在项目配置中进行修改。 通过以上设置一般就可以解决jdk版本不兼容地方问题。

详细解释HiveSQL执行计划

一、前言 Hive SQL的执行计划描述SQL实际执行的整体轮廓,通过执行计划能了解SQL程序在转换成相应计算引擎的执行逻辑,掌握了执行逻辑也就能更好地把握程序出现的瓶颈点,从而能够实现更有针对性的优化。此外还能帮助开发者识别看似等价的SQL其…

Redis 高性能设计之epoll和IO多路复用深度解析

I/O多路复用模型是什么 I/O:网络I/O多路:多个客户端连接(连接就是套接字描述符,即socket或者channel),指的是多条TCP连接复用:用一个进程来处理多条的连接,使用单进程就能的够实现同…

【Linux系统编程】操作系统的概念、定位 及系统调用

文章目录 前言1. 操作系统的概念和定位2. 如何理解“管理”3. 操作系统为什么要做管理4. 系统调用和库函数概念5. 局部性原理6. 计算机体系结构 前言 上一篇文章我们学习了冯诺依曼体系结构(属于计算机硬件的范畴),其中我们提到,因…

c++静态成员变量与静态成员函数

一、静态成员变量 1、说明 1.1、所有对象共享同一份静态变量 1.2、编译阶段分配内存 1.3、类内声明,类外初始化操作 静态成员变量,不属于某个具体的类对象,多有的类对象共享同一份数据 因此静态成员变量有两种方式访问 2、…

阿里云大数据实战记录10:Hive 兼容模式的坑

文章目录 1、前言2、什么是 Hive 兼容模式?3、为什么要开启 Hive 模式?4、有什么副作用?5、如何开启 Hive 兼容模式?6、该场景下,能不能不开启 Hive 兼容模式?7、为什么不是DATE_FORMAT(datetime, string)&…

【小记录】jupyter notebook新版本

手欠升级 😅今天手贱,在anaconda navigator里面更新了最新版本的spyder,然后莫名奇妙地jupyter notebook就打不开了😅,报错说缺少模块”ModuleNotFoundError: No module named jupyter_server.contents“,…

给微信小程序添加隐私协议

前些日子,微信官方针对用户的安全信息又进行了增强,这次更新几乎要求所有的小程序都需要进行整改,只要是涉及到用户的隐私的小程序都需要进行整改,这次整改是强制性的。 点开相关指引之后会跳转到下面的链接:参考链接…

解决php导出excel中小数尾部0不显示的问题

调整代码前: 新增代码: //小数避免末尾0不显示的问题 foreach ($list as &$line) {foreach ($line as &$column) {if (is_numeric($column) && strpos($column, .)!false) {$column " {$column} ";}} } 效果&#xf…

【【萌新的riscV的学习之关于risc指令集的学习使用总五】】

萌新的riscV的学习之关于risc指令集的学习使用总五 opcode(操作码) 指令的基本操作 rd目的操作数寄存器 用来存放操作结果 funct3 一个另外的操作码字段 rs1: 第一个源操作数寄存器 rs2: 第二个源操作数寄存器 funct7: 一个另外的操作码字段 还有一种I型…

ApplicationContext实现

基于classpath下的xml格式的配置文件来创建bean对象 java代码 package com.example;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.Fi…

力扣刷题班 第3课 02-分治与回溯算法

分治(例题1)九键电话号码的字母组合 电话号码的字⺟组合 给定⼀个仅包含数字 2-9 的字符串,返回所有它能表示的字⺟组合。答案可以按 任意顺序 返回。 给出数字到字⺟的映射如下(与电话按键相同)。注意 1 不对应任何字…

【计算机视觉】Image Feature Extractors方法介绍合集(二)

文章目录 一、Mixed Depthwise Convolution二、Deformable Kernel三、Dynamic Convolution四、Submanifold Convolution五、CondConv六、Active Convolution七、Depthwise Dilated Separable Convolution八、Involution九、Dilated convolution with learnable spacings十、Att…

Elastic Stack 8.10:更简单的跨集群搜索和身份验证等等

作者:Tyler Perkins, Gilad Gal, Shani Sagiv, George Kobar, Michael Peterson, Aris Papadopoulos Elastic Stack 8.10 增强了跨集群和向量搜索、数据摄取、Kibana 和云注册。 配置远程搜索时获得更大的灵活性,并提供更多信息来分类问题,…

小白备战大厂算法笔试(八)——搜索

搜索 二分查找 二分查找是一种基于分治策略的高效搜索算法。它利用数据的有序性,每轮减少一半搜索范围,直至找到目标元素或搜索区间为空为止。 Question: 给定一个长度为n的数组 nums ,元素按从小到大的顺序排列,数组…

git基本手册

Git and GitHub for Beginners Tutorial - YouTube Kevin Stratvert git config --global user.name “xxx” git config --global user.email xxxxx.com 设置默认分支 git config --global init.default branch main git config -h查看帮助 详细帮助 git help config 清除 cl…

计网第五章(运输层)(二)(端口号、复用和分用)

一、端口号 (1)基本概念 在上部分(计网第五章(运输层)(一)_永无魇足的博客-CSDN博客)提到运输层用不同的端口对应不同的应用进程。 端口就是用来区分不同应用进程的标识符。 每个…

HarmonyOS/OpenHarmony应用开发-DevEco Studio新建项目的整体说明

一、文件-新建-新建项目 二、传统应用形态与IDE自带的模板可供选用与免安装的元服与IDE中自带模板的选择 三、以元服务,远程模拟器为例说明IDE整体结构 1区是工程目录结构,是最基本的配置与开发路径等的认知。 2区是代码开发与修改区,是开发…