AssertJ简介

简介: JUnit和Hamcrest学Java的一定知道JUnit吧,它是一个著名的Java单元测试框架。我们在使用JUnit测试的时候,一般情况下会使用它的Assert类下的各种assertXXX方法。

JUnit和Hamcrest

学Java的一定知道JUnit吧,它是一个著名的Java单元测试框架。我们在使用JUnit测试的时候,一般情况下会使用它的Assert类下的各种assertXXX方法。如果是细心一点的用户可能会发现JUnit包含了一个依赖Hamcrest,这是一个断言库。我们可以使用断言库来进行复杂的断言操作。

但是Hamcrest有几个缺点:一是缺乏更新,我看了看MavenCentral上,Hamcrest库最近更新还是2014年,因此对新的Java 8支持可能不够充分;二是Matcher分散在多个类中,编写困难,我们为了编写类似assertThat(responseString, anyOf(containsString("color"), containsString("colour")));这样的代码,需要静态引入多个类(使用IDEA还好,用Eclipse的静态导入更麻烦);三是JUnit仅依赖了Hamcrest核心包,只附带了最基本的断言功能,如果我们希望断言数字大小之类的话,还需要自己引入Hamcrest完整包,比较麻烦。

AssertJ

Hamcrest缺点不少,自然有更好的类库出现。FEST就是其中之一。不幸的是,FEST也很久不更新了。有人就在FEST的基础上,增加了很多新功能,这就是AssertJ

AssertJ有1、2、3三个版本,分别用于JDK6、7、8(及以上)。要在JDK 8中使用AssertJ,在项目中添加如下依赖(假如你使用的是Gradle)。

testCompile 'org.assertj:assertj-core:3.6.2'

然后在测试类中静态导入所有断言。

import static org.assertj.core.api.Assertions.*;

然后就很简单了。在测试方法中需要断言的地方键入assertThat即可。

assertThat(objectUnderTest).//断言操作

由于AssertJ的断言操作全在一个类中,所以当我们输入.之后,IDE就会嗖嗖的把所有断言列出来。

AssertJ支持所有Java基本类型,所以我们只要引入这一个包就可以满足大多数需求。如果需要JodaTime等支持,引入相应AssertJ扩展即可。由于AssertJ使用确实很简单,所以我感觉没什么写的了。有需要的话看看它的官网上的文档即可。

参考资料

https://github.com/junit-team/junit4/wiki/Matchers-and-assertthat

https://joel-costigliola.github.io/assertj/assertj-core.html

相关文章
|
11月前
|
机器学习/深度学习 人工智能 监控
AI 视频监控技术核心解析:三大底层能力支撑智能化升级
AI视频监控突破传统安防局限,依托三大核心技术:从“被动感知”到“主动理解”,实现精准场景识别;从“孤立运行”到“深度协同”,构建业务联动闭环;从“高门槛应用”到“普惠化落地”,降低部署成本与使用门槛。技术融合场景定制、智能决策与轻量化架构,推动安防向高效、智能、普及化方向升级。
1562 0
|
存储 开发工具 数据库
初识 Git——《Pro Git book》
Git 是一种分布式版本控制系统,用于跟踪文件的修改并允许多个开发人员协作开发项目。它通过保存完整的项目历史记录来确保代码的完整性和安全性。
289 20
初识 Git——《Pro Git book》
|
算法 Unix Linux
Linux进程与信号:正常与异常的退出机制探索
Linux进程与信号:正常与异常的退出机制探索
1295 1
|
运维 Java 程序员
帮助你掌握if-else的正确使用方法
在编程中,if-else语句引导程序走向不同路径。它是基础却至关重要,尤其对Java程序员。本文通过实例展示if-else的有效使用方法,包括减少嵌套以提升代码可读性,利用逻辑运算符简化条件判断,以及在异常处理中的应用。通过这些实践,你将学会如何让if-else成为代码中的导航仪,避免成为绊脚石,从而编写出更清晰、高效的程序。
402 1
|
Java Maven
Maven命令行参数详解
Maven命令行参数详解
939 0
|
智能硬件
华为鸿蒙操作系统有哪些应用场景?
华为鸿蒙操作系统有哪些应用场景?
4205 1
|
存储 算法 数据安全/隐私保护
手把手教你在FPGA上搭建一个ARM Cortex-M3软核
手把手教你在FPGA上搭建一个ARM Cortex-M3软核
2214 0
手把手教你在FPGA上搭建一个ARM Cortex-M3软核
|
存储 算法 程序员
【算法训练-搜索算法 一】【DFS网格搜索框架】岛屿数量、岛屿的最大面积、岛屿的周长
【算法训练-搜索算法 一】【DFS网格搜索框架】岛屿数量、岛屿的最大面积、岛屿的周长
421 0
|
缓存 JavaScript 前端开发
vue核心面试题汇总【查缺补漏】(二)
vue核心面试题汇总【查缺补漏】(二)
215 0
|
Linux
使用Rufus制作LINUX启动安装U盘(成功)
使用Rufus制作LINUX启动安装U盘(成功)
1390 0
使用Rufus制作LINUX启动安装U盘(成功)