前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AssertJ简介

AssertJ简介

作者头像
乐百川
发布2022-05-05 19:52:41
4650
发布2022-05-05 19:52:41
举报

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)。

代码语言:javascript
复制
testCompile 'org.assertj:assertj-core:3.6.2'

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

代码语言:javascript
复制
import static org.assertj.core.api.Assertions.*;

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

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-02-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JUnit和Hamcrest
  • AssertJ
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档