AssertJ简介

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,664评论 19 139
  • 转自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帅199207阅读 8,807评论 3 93
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,282评论 6 342
  • Java 面试中的重要话题 除了你看到的惊人的问题数量,我也尽量保证质量。我不止一次分享各个重要主题中的问题,也确...
    hahaYXXXJ阅读 2,749评论 0 38
  • 事情的本身总比想象中的容易一些,虽然有点难受但结果是好的。这种难受只会给我们带来力量催人上进,奋斗的路上又多了一个...
    吕明超阅读 197评论 0 0

友情链接更多精彩内容