junit 5测试异常处理_使用JUnit 5测试异常

junit 5测试异常处理

JUnit 5带来了令人敬畏的改进,并且与以前的版本有很大不同。 JUnit 5在运行时需要Java 8,因此Lambda表达式可以在测试中使用,尤其是在断言中。 这些断言之一非常适合测试异常。

设置项目

为了演示JUnit 5的用法,我使用了我的长期unit-testing-demo Github项目,因为该项目已经包含许多单元测试示例: https : //github.com/kolorobot/unit-testing-demo 。 向现有项目添加JUnit 5支持非常简单:除了所有标准JUnit 5依赖项之外,在测试运行时路径中还必须存在junit-vintage-engine:

// JUnit 5 Jupiter API and TestEngine implementationtestCompile("org.junit.jupiter:junit-jupiter-api:5.0.0-M4")testRuntime("org.junit.jupiter:junit-jupiter-engine:5.0.0-M4")// Support JUnit 4 teststestCompile("junit:junit:4.12")testRuntime("org.junit.vintage:junit-vintage-engine:4.12.0-M4")

JUnit 5 assertThrows

JUnit 5内置的org.junit.jupiter.api.Assertions#assertThrows获取预期的异常类作为第一个参数,而可执行文件(功能性接口)则可能将异常作为第二个参数。 如果未引发任何异常或其他类型的异常,则该方法将失败。 该方法返回异常本身,该异常可用于进一步的声明:

import org.junit.jupiter.api.*;import static org.junit.jupiter.api.Assertions.*;class Junit5ExceptionTestingTest { // non public, new to JUnit5@Test@DisplayName("Junit5 built-in Assertions.assertThrows and Assertions.assertAll")@Tag("exception-testing")void verifiesTypeAndMessage() {Throwable throwable = assertThrows(MyRuntimeException.class, new Thrower()::throwsRuntime);assertAll(() -> assertEquals("My custom runtime exception", throwable.getMessage()),() -> assertNull(throwable.getCause()));}
}

摘要

在JUnit 4中,有许多方法可以测试测试代码中的异常,包括try-catch习惯用法,JUnit @Rule或AssertJ(3+)。 从JUnit 5开始,可以使用内置的断言。

参考资料

  • 测试异常– JUnit 4和AssertJ
  • 测试异常– JUnit 4,Java 8和Lambda表达式
  • 在JUnit中测试异常的不同方法

翻译自: https://www.javacodegeeks.com/2017/06/testing-exceptions-junit-5.html

junit 5测试异常处理

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

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

相关文章

多元回归求解 机器学习_金融领域里的机器学习算法介绍:人工神经网络

人工智能的发展在很大程度上是由神经网络、深度学习和强化学习推动的。这些复杂的算法可以解决高度复杂的机器学习任务,如图像分类、人脸识别、语音识别和自然语言处理等。这些复杂任务一般是非线性的,同时包含着大量的特征输入。我们下面我们将分几天的…

百度网盘不限速被限速_基本API限速

百度网盘不限速被限速您可能正在开发某种形式的(Web / RESTful)API,并且如果它是面向公众的(甚至是内部的),则通常需要以某种方式对其进行速率限制。 即,限制一段时间内执行的请求数&#xff0c…

mysql怎么查看刷脏页慢_一条SQL查询语句极为缓慢,如何去优化呢

一条 SQL 查询语句执行的很慢,那是每次查询都很慢呢?还是大多数情况下是正常的,偶尔出现很慢呢?可以分以下两种情况来讨论。大多数情况是正常的,只是偶尔会出现很慢的情况。在数据量不变的情况下,这条SQL语…

MacBook Air如何清理缓存

方法一:使用热键 AltCmdRP电源键这是清理缓存热键。 用法:先按住前4个键,然后按一次电源键,前四个键不松开,等到听到电脑第四次开机音效后可以松开,开机音效共有五次,然后电脑自动开机 方法二&…

apache ignite_使用Spring Data的Apache Ignite

apache igniteSpring Data提供了一种统一而简便的方法来访问不同类型的持久性存储,关系数据库系统和NoSQL数据存储。 它位于JPA之上,添加了另一层抽象并定义了基于标准的设计以在Spring上下文中支持持久层。 Apache Ignite IgniteRepository实现了Spri…

centos 7 mysql随机密码_在centos中安装了mysql5.7之后解决不知道随机的密码的问题...

在安装完成mysql5.7 之后,发现密码不知道。不要紧,直接重置密码。1.修改配置文件my.cfg[rootlocalhost ~]# vi /etc/my.cnf找到mysqld在之后添加skip-grant-tables保存退出2. 重启mysql服务service mysqld restart3.直接登陆mysql而不需要密码mysql -u…

python单用户登录_Django实现单用户登录的方法示例

最近由于要毕业了写论文做毕设,然后还在实习发现已经好久都没有写博客了。今天由于工作需求,需要用Django实现单用户登录。大概意思就是跟QQ一样的效果,每个账号只能一个地方登录使用,限制账号的登录次数。由于用的是Django自带的…

IntelliJ IDEA for Windows 默认模式下的快捷键

文章目录General 通用Debugging 调试Search/ Replace 查询/替换Editing 编辑Refactoring 重构Navigation 导航Compile and Run 编译和运行Usage Search 使用查询VCS/ Local History 版本控制/本地历史记录Live Templates 动态代码模板Other 官方文档上没有体现点击查看官方文档…

java事件处理过程分布写_Java 9中的进程处理

java事件处理过程分布写一直以来,用Java管理操作系统进程都是一项艰巨的任务。 这样做的原因是可用的工具和API较差。 老实说,这并非没有道理:Java并非旨在达到目的。 如果要管理OS进程,则可以使用所需的Shell,Perl脚本…

mac mysql5.7.9 dmg_Mac 安装 mysql5.7

mac 安装msql 5.7最近使用Mac系统,准备搭建一套本地web服务器环境。因为Mac系统没有自带mysql,所以要手动去安装mysql,本次安装mysql最新版5.7.28。安装步骤参考以下博客https://www.jianshu.com/p/71f81a0c62b2安装成功后,因为密…

安卓系统dicom阅读器_用户分享:电子书阅读器Note Pro,一座贴心的移动图书馆...

本文转载自“什么值得买”官网用户“小良读书”,经作者授权转载。Note Pro,一座贴心的移动图书馆移动图书馆貌美的小书郎10.3寸高清大屏更适合专业书籍的阅读如果说多年前入手了一台kindle paperwite3电纸书阅读器,它让我畅游了书籍的江河&am…

vim 编辑器命令整理

文章目录一、基本使用流程二、普通命令模式(一)切换到插入模式(编辑/写入/输入)(二)切换到可视模式(选择文本模式)(三)切换至底行命令模式(四&…

mysql f_MySQL

医生给病人诊断的时候,一般会使用听诊器来诊断肺部是否正常。如果你的MySQL出现了性能问题,第一个需要“诊断”的就是slow log(慢日志)了。slow log文件很小,使用more less等命令就足够了。如果slow log很大怎么办?这里介绍MySQL自…

activiti dmn_端到端BPM(带有DMN标记)

activiti dmn下周的红帽峰会即将成为有史以来最好的峰会之一! 而且,如果您是Drools或jBPM的狂热者,您会很忙 :Signavio和Red Hat之间的合作伙伴关系是我们为您准备的另一个顶级演讲。 邓肯道尔(Duncan Doyle&#xff…

python计算两个点之间的距离_python实现两个经纬度点之间的距离和方位角的方法...

最近做有关GPS轨迹上有关的东西,花费心思较多,对两个常用的函数总结一下,求距离和求方位角,比较精确,欢迎交流!1. 求两个经纬点的方位角,P0(latA, lonA), P1(latB, lonB)(很多博客写的不是很好&…

netbeans 9_NetBeans 9抢先体验

netbeans 9Java 9即将来临,NetBeans 9也即将来临。在本文中,我们将看到NetBeans 9 Early Access为开发人员提供的支持,以帮助他们构建Java 9兼容的应用程序。 Java 9提供了许多(大约90种) 新功能,包括模块…

同一个ip能否两次加入组播_组播IGMPv1/v2/v3精华知识汇总

闲言少叙,直奔主题,开说之前先做点铺垫,回顾一下网络的基础知识。D类地址划分回顾组播是IPv4地址分类中的D类,我们回顾一下IPv4的地址划分A类:首bit0,0-127网段,网络掩码8,其中0.0.0…

命令(CMD)终端的清屏(清除/清空)命令/快捷键

Windows CMD 或者 Navicat 命令窗口的清屏命令:Clear 或者 CLS MacBook 命令终端的清屏命令/快捷键:CtrlCmdL(清除屏幕) ,CmdK(清除到开头),Clear ,CtrlL Linux 命令终…

弹窗要打开或保存来自_如何让 PopClip 支持印象笔记客户端:保存到印象笔记amp;高亮文字...

自从印象笔记品牌独立并发布新APP后,Mac系统下很多工具不再支持与印象笔记客户端进行联动,PopClip 就是其中之一。目前 Popclip 官方并未将印象笔记加入到插件的支持中,不过我们可以手动修改来解决这个问题。Popclip 之所以不支持新版本的印象…

vue 混入对象_特性和混入不是面向对象的

vue 混入对象让我立刻说,我们将在这里讨论的功能是那些迫切需要进行放线手术的人带给面向对象编程的纯粹的毒药 ,就像David West在他的《 Object Thinking》一书中所建议的那样。 这些功能具有不同的名称,但是最常见的是traits和mixins 。 我…