基本语法:assertThat(参数值, 匹配符)

常用:is、equalTo、containsString

@Test  public void testHamcrestMatchers() {

// 核心匹配

// allOf: 所有条件都必须满足,相当于&&

assertThat("myname", allOf(startsWith("my"), containsString("name")));

// anyOf: 其中一个满足就通过, 相当于||

assertThat("myname", anyOf(startsWith("na"), containsString("name")));

// both: &&

assertThat("myname", both(containsString("my")).and(containsString("me")));

// either: 两者之一

assertThat("myname", either(containsString("my")).or(containsString("you")));

// everyItem: 每个元素都需满足特定条件

assertThat(Arrays.asList("my", "mine"), everyItem(startsWith("m")));

// hasItem: 是否有这个元素

assertThat(Arrays.asList("my", "mine"), hasItem("my"));

// hasItems: 包含多个元素         assertThat(Arrays.asList("my", "mine", "your"), hasItems("your", "my"));

// is: is(equalTo(x))或is(instanceOf(clazz.class))的简写

assertThat("myname", is("myname"));

assertThat("mynmae", is(String.class));

// anything(): 任何情况下,都匹配正确

assertThat("myname", anything());

// not: 否为真,相当于!

assertThat("myname", is(not("you")));

// nullValue(): 值为空

String str = null;

assertThat(str, is(nullValue()));

// notNullValue(): 值不为空

String str2 = "123";

assertThat(str2, is(notNullValue()));

// 字符串匹配

// containsString:包含字符串

assertThat("myname", containsString("na"));

// stringContainsInOrder: 顺序包含,“my”必须在“me”前面

assertThat("myname", stringContainsInOrder(Arrays.asList("my", "me")));

// endsWith: 后缀

assertThat("myname", endsWith("me"));

// startsWith: 前缀

assertThat("myname", startsWith("my"));

// isEmptyString(): 空字符串

assertThat("", isEmptyString());

// equalTo: 值相等, Object.equals(Object)

assertThat("myname", equalTo("myname"));

assertThat(new String[] {"a", "b"}, equalTo(new String[] {"a", "b"}));

// equalToIgnoringCase: 比较时,忽略大小写

assertThat("myname", equalToIgnoringCase("MYNAME"));

// equalToIgnoringWhiteSpace: 比较时, 首尾空格忽略, 比较时中间用单个空格

assertThat(" my \t name ", equalToIgnoringWhiteSpace(" my name "));

// isOneOf: 是否为其中之一

assertThat("myname", isOneOf("myname", "yourname"));

// isIn: 是否为其成员

assertThat("myname", isIn(new String[]{"myname", "yourname"}));

// toString() 返回值校验

assertThat(333, hasToString(equalTo("333")));

// 数值匹配

// closeTo: [operand-error, operand+error], Double或BigDecimal类型

assertThat(3.14, closeTo(3, 0.5));

assertThat(new BigDecimal("3.14"), is(closeTo(new BigDecimal("3"), new BigDecimal("0.5"))));

// comparesEqualTo: compareTo比较值

assertThat(2, comparesEqualTo(2));

// greaterThan: 大于

assertThat(2, greaterThan(0));

// greaterThanOrEqualTo: 大于等于

assertThat(2, greaterThanOrEqualTo(2));

// lessThan: 小于

assertThat(0, lessThan(2));

// lessThanOrEqualTo: 小于等于

assertThat(0, lessThanOrEqualTo(0));

// 集合匹配

// array: 数组长度相等且对应元素也相等

assertThat(new Integer[]{1, 2, 3}, is(array(equalTo(1), equalTo(2), equalTo(3))));

// hasItemInArray: 数组是否包含特定元素

assertThat(new String[]{"my", "you"}, hasItemInArray(startsWith("y")));

// arrayContainingInAnyOrder, 顺序无关,长度要一致

assertThat(new String[]{"my", "you"}, arrayContainingInAnyOrder("you", "my"));

// arrayContaining:  顺序,长度一致

assertThat(new String[]{"my", "you"}, arrayContaining("my", "you"));

// arrayWithSize: 数组长度

assertThat(new String[]{"my", "you"}, arrayWithSize(2));

// emptyArray: 空数组

assertThat(new String[0], emptyArray());

// hasSize: 集合大小

assertThat(Arrays.asList("my", "you"), hasSize(equalTo(2)));

// empty: 空集合

assertThat(new ArrayList(), is(empty()));

// isIn: 是否为集合成员

assertThat("myname", isIn(Arrays.asList("myname", "yourname")));

// Map匹配

Map myMap = new HashMap();

myMap.put("name", "john");

// hasEntry: key && value匹配

assertThat(myMap, hasEntry("name", "john"));

// hasKey: key匹配

assertThat(myMap, hasKey(equalTo("name")));

// hasValue: value匹配

assertThat(myMap, hasValue(equalTo("john")));

}

assertThat用法看这一篇就够了!相关推荐

  1. Qt中QMessageBox的用法---看这一篇就够了

    一.详细说明 QMessageBox类提供一个模态对话框,用于通知用户或询问用户一个问题并接收答案. 消息框显示一个主要文本,用于向用户提示某个情况;显示一个信息文本,用于进一步解释警报或向用户询问问 ...

  2. Docker的降维打击是怎么利用天时地利人和的?看这一篇就够了

    Docker的降维打击是怎么利用天时地利人和的?看这一篇就够了 容器的诞生 容器技术的奠基 容器生态的奠基 docker的出现 什么是容器 集装箱 容器 容器编排 容器的诞生 容器技术的奠基 2000 ...

  3. 聊聊Java8之后的JDK升级内容(看这一篇就够了)

    聊聊Java8之后的JDK升级内容(看这一篇就够了) 背景 从 JDK 8 到 JDK 17 的新特性 JDK8 回顾 JDK9 JDK10 JDK11 JDK12 JDK13 JDK14 JDK15 ...

  4. C++ cin的使用,看这一篇就够了

    C++ cin的用法,看这一篇就够了 1 C++输入输出综述 C++ IO首先建立在为Unix环境开发的原始库函数上:ANSI C正式承认这个库时,将其称为标准输入/输出包: IO相关类定义在头文件i ...

  5. api网关选型_如何轻松打造百亿流量API网关?看这一篇就够了(下)

    如何轻松打造百亿流量API网关?看这一篇就够了(上) 上篇整体描述了网关的背景,涉及职能.分类.定位环节,本篇进入本文的重点,将会具体谈下百亿级流量API网关的演进过程. 准备好瓜子花生小板凳开始积累 ...

  6. python装饰器功能是冒泡排序怎么做_传说中Python最难理解的点|看这完篇就够了(装饰器)...

    https://mp.weixin.qq.com/s/B6pEZLrayqzJfMtLqiAfpQ 1.什么是装饰器 网上有人是这么评价装饰器的,我觉得写的很有趣,比喻的很形象 每个人都有的内裤主要是 ...

  7. serviceloader java_【java编程】ServiceLoader使用看这一篇就够了

    转载:https://www.jianshu.com/p/7601ba434ff4 想必大家多多少少听过spi,具体的解释我就不多说了.但是它具体是怎么实现的呢?它的原理是什么呢?下面我就围绕这两个问 ...

  8. docker 删除所有镜像_关于 Docker 镜像的操作,看完这篇就够啦 !(下)| 文末福利...

    紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...

  9. mysql ip比较大小_MySQL优化/面试,看这一篇就够了

    原文链接:http://www.zhenganwen.top/articles/2018/12/25/1565048860202.html 作者:Anwen~ 链接:https://www.nowco ...

最新文章

  1. 项目总结(二)-一些常用的工具浅谈
  2. html多条件检索折叠,八种方式实现多条件匹配
  3. SCons: A software construction tool
  4. Laravel-admin hasMany表单关联提交报错字段 无详细信息错误说明
  5. 常用jquery鼠标事件和渐变动画效果
  6. java 安全库_国家信息安全漏洞库
  7. 【开源框架】:解决方案级别的代码生成器 WebFirst
  8. mysqldump备份报Binlogging on server not active的解决
  9. cookie 原理及应用
  10. java file的相对路径_JAVA File的建立及相对路径绝对路径
  11. 数据结构vl怎么求_数据结构
  12. Kmalloc和Vmalloc的区别
  13. 蓝桥杯2015年第六届C/C++省赛B组第七题-牌型种数
  14. C语言平年闰年该月天数,2. 输入年月日,求它是该年的第几天。注:闰年的2月有29天,平年的2月有28天。(C语言编程题)...
  15. 如何测试某个网站的图片是否可外链使用
  16. 天龙八部手游服务器维护公告,天龙八部手游 近期更新维护公告
  17. 希尔伯特变换求瞬时频率的matlab动态实现
  18. [名人观点--刘振飞] 微软研发流程
  19. 关于Keyhole和Google Maps(三)
  20. 陆奇加入对李彦宏意味着什么?

热门文章

  1. C++ 同类不同对象的互相访问
  2. 贴图、纹理、材质、着色器
  3. html创建文字,Three中创建文字的几种方法
  4. A,B,C类基金我们应该怎么买
  5. 工具类库系列(四)-CsvReader
  6. gluOrtho2D()与glOrtho()使用中遇到的一些问题
  7. 遥感在农业方面的应用_来源价格天地公众号
  8. ubuntu 查看内存及cpu使用情况
  9. ChatGPT + MindShow 三分钟搞定PPT制作
  10. request.getParameter讲解