assertj断言异常_编写自定义的AssertJ断言

assertj断言异常

AssertJ是广泛使用的Hamcrest匹配器的替代匹配库。 实际上,对于我自己的项目,我已经更改为仅使用AssertJ-我只是发现流畅的界面和可扩展性非常吸引人。

您可以编写自定义断言,如下所示:

想象一下一种具有强度和饮料类型的咖啡 ,例如EspressoLatte 。 定制CoffeeAssert根据其自定义业务逻辑(在本例中为属性)验证咖啡实例。

public class CoffeeAssert extends AbstractAssert<CoffeeAssert, Coffee> {public CoffeeAssert(Coffee actual) {super(actual, CoffeeAssert.class);}public static CoffeeAssert assertThat(Coffee actual) {return new CoffeeAssert(actual);}public CoffeeAssert hasType(Coffee.Type type) {isNotNull();if (actual.getType() != type) {failWithMessage("Expected the coffee type to be <%s> but was <%s>", type, actual.getType());}return this;}// hasStrength(Strength) omitted ...public CoffeeAssert isNotDecaf() {isNotNull();if (actual.getStrength() == Coffee.Strength.DECAF) {failWithMessage("Expected a coffee but got decaf!");}return this;}
}

然后可以使用自定义断言简单地验证咖啡实例。 assertThat的静态导入必须引用CoffeeAssert

import static com.example.coffee.CoffeeAssert.assertThat;
...Coffee coffee = new Coffee();
coffee.setStrength(Strength.STRONG);
coffee.setType(Type.ESPRESSO);assertThat(coffee).hasType(Type.ESPRESSO).isNotDecaf();

使用自定义断言可以极大地提高测试代码的质量。

这篇帖子从我的时事通讯012中转贴了

发现帖子有用吗? 订阅我的时事通讯,获取有关IT和Java的更多免费内容,技巧和窍门:

翻译自: https://www.javacodegeeks.com/2018/01/write-custom-assertj-assertions.html

assertj断言异常

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

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

相关文章

Unix 发展简史

1965年时&#xff0c;贝尔实验室&#xff08;Bell Labs&#xff09;加入一项由通用电气&#xff08;General Electric&#xff09;和麻省理工学院&#xff08;MIT&#xff09;合作的项目&#xff1b;该项目要建立一套多使用者、多任务、多层次&#xff08;multi-user、multi-ta…

linux服务器不会中毒,[转载]ubuntu 不会中毒的原因(转)

ubuntu不会中毒的原因不是因为linux用户少&#xff0c;而是其它原因。如下是转载的高手的文章&#xff1a;可能不少人持这样一种观点&#xff0c;认 为 Linux病毒少是因为Linux不像Windows那么普及&#xff0c;其实这种观点很早已经被人批驳过了&#xff0c;一个最有力的论据是…

6-7 使用函数输出水仙花数_「Java」再议printf函数

System.out.printf() 是在JDK1.5版开始引入的方法&#xff0c;即在JDK1.5以后的版本才可以使用此函数&#xff0c;printf 方法有 printf(String format, Object ... args) 和 printf(Locale l, String format, Object ... args) 两种重载方式。其实学过C语言的小伙伴应该会觉得…

Debian GNU/Linux 的发展简史

Debian 是最早的 Linux 发行版之一&#xff0c;由 Ian Murdock&#xff08;伊恩默多克&#xff09; 创立。lan Murdock 于1973年4 月28日出生于德国的君斯坦市(Konstanz, Germany)。他是Debian GNU/Linux 发行版的创始人&#xff0c;也是商用Linux发行商Progeny公司的创始人。他…

jdk 细粒度锁_使用JDK 8轻松进行细粒度排序

jdk 细粒度锁Java的8的推出流和有用的静态 / 默认的方法比较接口可以很容易地根据个人的领域两个对象比较“值&#xff0c;而不需要实现一个比较&#xff08;T&#xff0c;T&#xff09;在其对象的类方法被比较。 我将使用一个简单的Song类来帮助演示这一点&#xff0c;接下来…

c语言命名规则_C语言的基本数据类型及变量

学习目标了解C语言的基本数据类型了解变量的基本概念了解变量的使用方法了解了变量的命名方法了解格式占位符了解变量的输出了解C语言程序的基本数据类型及概念的使用方法擦在C语言编程中&#xff0c;系统定义了多种数据类型&#xff0c;本节将讲解基本数据类型的分类。基本数据…

linux socket默认超时时间设置,Socket中如何设置连接超时 (转)

Socket中如何设置连接超时 (转)Socket中如何设置连接超时AntGhazi/2001.12.14 主页&#xff1a;antghazi.yeah把CSDN与中文翻了底朝天&#xff0c;也没找到如何设置socket的连接超时的满意方法&#xff0c;问此问题的兄弟已有一大堆&#xff0c;这里偶就讲一下win下如何设置soc…

Linux 常用的软件包管理器/软件包管理工具详解

文章目录RPM 是什么&#xff1f;应用于哪些系统RPM 的前端工具有哪些RPM 包命名规范RPM 安装软件的默认路径RPM 安装原理图RPM 命令详解YUM 是什么&#xff1f;应用于哪些系统YUM 原理说明主要特点YUM 和 RPM 的区别YUM 命令详解DNF 是什么应用于哪些系统DNF 命令详解APT 是什么…

java world_Java World中的GraphQL简介

java world许多人认为GraphQL仅适用于前端和JavaScript&#xff0c;它在Java等后端技术中不占优势&#xff0c;但事实确实如此。 还经常将GraphQL与REST进行比较&#xff0c;但是这种比较是否合理&#xff1f; 首先&#xff0c;让我开始回答其中最重要的问题。 什么是GraphQL…

快速排序 动图_Java十大排序算法最强总结

看到一篇很不错的文章&#xff0c;不多说&#xff0c;看吧排序算法说明0.1 排序的定义对一序列对象根据某个关键字进行排序。0.2 术语说明稳定&#xff1a;如果a原本在b前面&#xff0c;而ab&#xff0c;排序之后a仍然在b的前面&#xff1b;不稳定&#xff1a;如果a原本在b的前…

linux安装2870无线网卡,ubuntu15.04安装usb无线网卡

一般这种无线网卡都是联fake芯片&#xff0c;我使用的ralin(你懂的k)的usb无线1150 M。你去找lei凌官网找不到&#xff0c;只能去找芯片类型的制造者&#xff0c;所以只能去联Fake官网查询下载对应型号。1、我是这样子查看型号的&#xff0c;找到通过驱动软件检测并已经安装成功…

Linux 应用程序的源码包如何安装?

文章目录configuremakemake install关于文件 configure 的简单介绍其它命令简介C 语言开发的应用程序的源码包常以 .tar.gz 为扩展名&#xff0c;并且这些源码包通常使用 GNU 的 AUTOCONF 和 AUTOMAKE 生成编译配置文件&#xff0c;我们拿到这样的软件包后&#xff0c;执行下面…

exec su-exec_WildFly Kubernetes exec探针

exec su-exec活动性和就绪性探针会告诉Kubernetes&#xff0c;某个Pod是否正在运行并准备进行一些工作。 企业应用程序可以通过HTTP探测应用程序的状态。 如果没有暴露HTTP端点&#xff0c;Kubernetes也可以通过执行命令进行探测。 WildFly附带了有用的jboss-cli.sh 。 此CLI检…

feignclient注解使用_从 Feign 使用注意点到 RESTFUL 接口设计规范

最近项目中大量使用了Spring Cloud Feign来对接http接口&#xff0c;踩了不少坑&#xff0c;也产生了一些对RESTFUL接口设计的想法&#xff0c;特此一篇记录下。SpringMVC的请求参数绑定机制了解Feign历史的朋友会知道&#xff0c;Feign本身是Netflix的产品&#xff0c;Spring …

Linux 的发行版 Ubuntu 的发展简史

Ubuntu&#xff08;又称乌班图&#xff09;是一个是基于 Debian GNU/Linux 的以桌面应用为主的免费开源的 GNU/Linux 操作系统&#xff0c;由全球化的专业开发团队 Canonical 公司打造的。 Ubuntu Linux 是由南非人马克沙特尔沃思(Mark Shuttleworth)创办的基于 Debian Linux的…

linux实验报告五gcc编译,Linux之GCC命令 -- 解析GCC编译的四个过程

在Linux下进行C语言编程&#xff0c;必然要采用GNU GCC来编译C源代码生成可执行程序。Gcc指令的一般格式为&#xff1a;Gcc [选项] 要编译的文件 [选项] [目标文件]。其中&#xff0c;目标文件可缺省&#xff0c;Gcc默认生成可执行的文件名为&#xff1a;编译文件.out看一下经典…

python创建虚拟环境命令_Python创建虚拟环境报错

我使用命令&#xff1a;mkvirtualenv -p python3 test1,创建虚拟环境&#xff0c;然后报错如下()&#xff0c;虚拟机是用nat模式的: Exception: Traceback (most recent call last): File "/home/python/.virtualenvs/test11/share/python-wheels/urllib3-1.13.1-py2.py3-…

java7和java8切换_切换表达式到Java吗?

java7和java8切换已创建一个标题为“ Java语言的开关表达式”的JEP草案 。 当前的“摘要”状态为&#xff1a;“扩展switch语句&#xff0c;以便可以将其用作语句或表达式&#xff0c;并改善switch处理null的方式。 这些将简化日常编码&#xff0c;并为在switch使用模式匹配做好…

Xenix 操作系统的简史

简介 Xenix 是一种UNIX操作系统&#xff0c;可在个人电脑及微型计算机上使用。该系统由微软公司在1979年从美国电话电报公司获得授权&#xff0c;为Intel处理器所开发。后来&#xff0c;圣克鲁兹作业公司&#xff08;SCO&#xff09;收购了其独家使用权&#xff0c;自那以后&a…

servlet 配置 使用_配置HTTPS以与Servlet一起使用

servlet 配置 使用要配置Java EE应用程序以通过HTTPS进行通信&#xff0c;需要在web.xml文件中使用几行XML。 web.xml文件位于项目的WEB-INF目录中&#xff0c;通常在IDE生成Java EE Web应用程序时自动创建。 如果不是&#xff0c;您可以自己创建它。 HTTPS的动机 为Web应用程…