assertThat用法看这一篇就够了!
基本语法: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用法看这一篇就够了!相关推荐
- Qt中QMessageBox的用法---看这一篇就够了
一.详细说明 QMessageBox类提供一个模态对话框,用于通知用户或询问用户一个问题并接收答案. 消息框显示一个主要文本,用于向用户提示某个情况;显示一个信息文本,用于进一步解释警报或向用户询问问 ...
- Docker的降维打击是怎么利用天时地利人和的?看这一篇就够了
Docker的降维打击是怎么利用天时地利人和的?看这一篇就够了 容器的诞生 容器技术的奠基 容器生态的奠基 docker的出现 什么是容器 集装箱 容器 容器编排 容器的诞生 容器技术的奠基 2000 ...
- 聊聊Java8之后的JDK升级内容(看这一篇就够了)
聊聊Java8之后的JDK升级内容(看这一篇就够了) 背景 从 JDK 8 到 JDK 17 的新特性 JDK8 回顾 JDK9 JDK10 JDK11 JDK12 JDK13 JDK14 JDK15 ...
- C++ cin的使用,看这一篇就够了
C++ cin的用法,看这一篇就够了 1 C++输入输出综述 C++ IO首先建立在为Unix环境开发的原始库函数上:ANSI C正式承认这个库时,将其称为标准输入/输出包: IO相关类定义在头文件i ...
- api网关选型_如何轻松打造百亿流量API网关?看这一篇就够了(下)
如何轻松打造百亿流量API网关?看这一篇就够了(上) 上篇整体描述了网关的背景,涉及职能.分类.定位环节,本篇进入本文的重点,将会具体谈下百亿级流量API网关的演进过程. 准备好瓜子花生小板凳开始积累 ...
- python装饰器功能是冒泡排序怎么做_传说中Python最难理解的点|看这完篇就够了(装饰器)...
https://mp.weixin.qq.com/s/B6pEZLrayqzJfMtLqiAfpQ 1.什么是装饰器 网上有人是这么评价装饰器的,我觉得写的很有趣,比喻的很形象 每个人都有的内裤主要是 ...
- serviceloader java_【java编程】ServiceLoader使用看这一篇就够了
转载:https://www.jianshu.com/p/7601ba434ff4 想必大家多多少少听过spi,具体的解释我就不多说了.但是它具体是怎么实现的呢?它的原理是什么呢?下面我就围绕这两个问 ...
- docker 删除所有镜像_关于 Docker 镜像的操作,看完这篇就够啦 !(下)| 文末福利...
紧接着上篇<关于 Docker 镜像的操作,看完这篇就够啦 !(上)>,奉上下篇 !!! 镜像作为 Docker 三大核心概念中最重要的一个关键词,它有很多操作,是您想学习容器技术不得不掌 ...
- mysql ip比较大小_MySQL优化/面试,看这一篇就够了
原文链接:http://www.zhenganwen.top/articles/2018/12/25/1565048860202.html 作者:Anwen~ 链接:https://www.nowco ...
最新文章
- 项目总结(二)-一些常用的工具浅谈
- html多条件检索折叠,八种方式实现多条件匹配
- SCons: A software construction tool
- Laravel-admin hasMany表单关联提交报错字段 无详细信息错误说明
- 常用jquery鼠标事件和渐变动画效果
- java 安全库_国家信息安全漏洞库
- 【开源框架】:解决方案级别的代码生成器 WebFirst
- mysqldump备份报Binlogging on server not active的解决
- cookie 原理及应用
- java file的相对路径_JAVA File的建立及相对路径绝对路径
- 数据结构vl怎么求_数据结构
- Kmalloc和Vmalloc的区别
- 蓝桥杯2015年第六届C/C++省赛B组第七题-牌型种数
- C语言平年闰年该月天数,2. 输入年月日,求它是该年的第几天。注:闰年的2月有29天,平年的2月有28天。(C语言编程题)...
- 如何测试某个网站的图片是否可外链使用
- 天龙八部手游服务器维护公告,天龙八部手游 近期更新维护公告
- 希尔伯特变换求瞬时频率的matlab动态实现
- [名人观点--刘振飞] 微软研发流程
- 关于Keyhole和Google Maps(三)
- 陆奇加入对李彦宏意味着什么?