一.Hamcrest是什么?

Hamcrest is a library of matchers, which can be combined in to create flexible expressions of intent in tests.

Hamcrest 是一个为了测试为目的,且能组合成灵活表达式的匹配器类库。

二.Hamcrest jar包

  • hamcrest-core.jar -- This is the core API to be used by third-party framework providers. This includes the a foundation set of matcher implementations for common operations. This API is stable and will rarely change. You will
    need this library as a minimum.
  • hamcrest-library.jar -- The ever-growing library of Matcher implementations. This will grow between releases.
  • hamcrest-generator.jar -- A tool to allow many Matcher implementations to be combined into a single class so users don't have to remember many classes/packages to import. Generates code.
  • hamcrest-integration.jar -- Provides integration between Hamcrest and other testing tools, including JUnit (3 and 4), TestNG, jMock and EasyMock.

Alternatively, if you don't care:

  • hamcrest-all.jar -- Includes all of the above.
三.常用方法介绍
一般,在项目中导入hamcrest-core.jar, hamcrest-library.jar就能满足使用。
Eclipse新建一个JUnit test case; 测试类导入

import static org.hamcrest.Matchers.*;

测试方法如下:

    1. @Test
      1. public void testHamcrestMatchers() {
        1. // 核心匹配
          1. // allOf: 所有条件都必须满足,相当于&&
            1. assertThat("myname", allOf(startsWith("my"), containsString("name")));
              1. // anyOf: 其中一个满足就通过, 相当于||
                1. assertThat("myname", anyOf(startsWith("na"), containsString("name")));
                  1. // both: &&
                    1. assertThat("myname", both(containsString("my")).and(containsString("me")));
                      1. // either: 两者之一
                        1. assertThat("myname", either(containsString("my")).or(containsString("you")));
                          1. // everyItem: 每个元素都需满足特定条件
                            1. assertThat(Arrays.asList("my", "mine"), everyItem(startsWith("m")));
                              1. // hasItem: 是否有这个元素
                                1. assertThat(Arrays.asList("my", "mine"), hasItem("my"));
                                  1. // hasItems: 包含多个元素
                                    1. assertThat(Arrays.asList("my", "mine", "your"), hasItems("your", "my"));
                                      1. // is: is(equalTo(x))或is(instanceOf(clazz.class))的简写
                                        1. assertThat("myname", is("myname"));
                                          1. assertThat("mynmae", is(String.class));
                                            1. // anything(): 任何情况下,都匹配正确
                                              1. assertThat("myname", anything());
                                                1. // not: 否为真,相当于!
                                                  1. assertThat("myname", is(not("you")));
                                                    1. // nullValue(): 值为空
                                                      1. String str = null;
                                                        1. assertThat(str, is(nullValue()));
                                                          1. // notNullValue(): 值不为空
                                                            1. String str2 = "123";
                                                              1. assertThat(str2, is(notNullValue()));
                                                                    1. // 字符串匹配
                                                                      1. // containsString:包含字符串
                                                                        1. assertThat("myname", containsString("na"));
                                                                          1. // stringContainsInOrder: 顺序包含,“my”必须在“me”前面
                                                                            1. assertThat("myname", stringContainsInOrder(Arrays.asList("my", "me")));
                                                                              1. // endsWith: 后缀
                                                                                1. assertThat("myname", endsWith("me"));
                                                                                  1. // startsWith: 前缀
                                                                                    1. assertThat("myname", startsWith("my"));
                                                                                      1. // isEmptyString(): 空字符串
                                                                                        1. assertThat("", isEmptyString());
                                                                                          1. // equalTo: 值相等, Object.equals(Object)
                                                                                            1. assertThat("myname", equalTo("myname"));
                                                                                              1. assertThat(new String[] {"a", "b"}, equalTo(new String[] {"a", "b"}));
                                                                                                1. // equalToIgnoringCase: 比较时,忽略大小写
                                                                                                  1. assertThat("myname", equalToIgnoringCase("MYNAME"));
                                                                                                    1. // equalToIgnoringWhiteSpace: 比较时, 首尾空格忽略, 比较时中间用单个空格
                                                                                                      1. assertThat(" my \t name ", equalToIgnoringWhiteSpace(" my name "));
                                                                                                        1. // isOneOf: 是否为其中之一
                                                                                                          1. assertThat("myname", isOneOf("myname", "yourname"));
                                                                                                            1. // isIn: 是否为其成员
                                                                                                              1. assertThat("myname", isIn(new String[]{"myname", "yourname"}));
                                                                                                                1. // toString() 返回值校验
                                                                                                                  1. assertThat(333, hasToString(equalTo("333")));
                                                                                                                        1. // 数值匹配
                                                                                                                          1. // closeTo: [operand-error, operand+error], Double或BigDecimal类型
                                                                                                                            1. assertThat(3.14, closeTo(3, 0.5));
                                                                                                                              1. assertThat(new BigDecimal("3.14"), is(closeTo(new BigDecimal("3"), new BigDecimal("0.5"))));
                                                                                                                                1. // comparesEqualTo: compareTo比较值
                                                                                                                                  1. assertThat(2, comparesEqualTo(2));
                                                                                                                                    1. // greaterThan: 大于
                                                                                                                                      1. assertThat(2, greaterThan(0));
                                                                                                                                        1. // greaterThanOrEqualTo: 大于等于
                                                                                                                                          1. assertThat(2, greaterThanOrEqualTo(2));
                                                                                                                                            1. // lessThan: 小于
                                                                                                                                              1. assertThat(0, lessThan(2));
                                                                                                                                                1. // lessThanOrEqualTo: 小于等于
                                                                                                                                                  1. assertThat(0, lessThanOrEqualTo(0));
                                                                                                                                                          1. // 集合匹配
                                                                                                                                                            1. // array: 数组长度相等且对应元素也相等
                                                                                                                                                              1. assertThat(new Integer[]{1, 2, 3}, is(array(equalTo(1), equalTo(2), equalTo(3))));
                                                                                                                                                                1. // hasItemInArray: 数组是否包含特定元素
                                                                                                                                                                  1. assertThat(new String[]{"my", "you"}, hasItemInArray(startsWith("y")));
                                                                                                                                                                    1. // arrayContainingInAnyOrder, 顺序无关,长度要一致
                                                                                                                                                                      1. assertThat(new String[]{"my", "you"}, arrayContainingInAnyOrder("you", "my"));
                                                                                                                                                                        1. // arrayContaining: 顺序,长度一致
                                                                                                                                                                          1. assertThat(new String[]{"my", "you"}, arrayContaining("my", "you"));
                                                                                                                                                                            1. // arrayWithSize: 数组长度
                                                                                                                                                                              1. assertThat(new String[]{"my", "you"}, arrayWithSize(2));
                                                                                                                                                                                1. // emptyArray: 空数组
                                                                                                                                                                                  1. assertThat(new String[0], emptyArray());
                                                                                                                                                                                    1. // hasSize: 集合大小
                                                                                                                                                                                      1. assertThat(Arrays.asList("my", "you"), hasSize(equalTo(2)));
                                                                                                                                                                                        1. // empty: 空集合
                                                                                                                                                                                          1. assertThat(new ArrayList<String>(), is(empty()));
                                                                                                                                                                                            1. // isIn: 是否为集合成员
                                                                                                                                                                                              1. assertThat("myname", isIn(Arrays.asList("myname", "yourname")));
                                                                                                                                                                                                1. // Map匹配
                                                                                                                                                                                                  1. Map<String, String> myMap = new HashMap<String, String>();
                                                                                                                                                                                                    1. myMap.put("name", "john");
                                                                                                                                                                                                      1. // hasEntry: key && value匹配
                                                                                                                                                                                                        1. assertThat(myMap, hasEntry("name", "john"));
                                                                                                                                                                                                          1. // hasKey: key匹配
                                                                                                                                                                                                            1. assertThat(myMap, hasKey(equalTo("name")));
                                                                                                                                                                                                              1. // hasValue: value匹配
                                                                                                                                                                                                                1. assertThat(myMap, hasValue(equalTo("john")));
                                                                                                                                                                                                                  1. }
                                                                                                                                                                                                                1.  

                                                                                                                                                                                                                原文地址:https://blog.csdn.net/neven7/article/details/42489723

                                                                                                                                                                                                                JUnit4---Hamcrest匹配器常用方法总结的更多相关文章

                                                                                                                                                                                                                1. Junit 断言 assertThat Hamcrest匹配器

                                                                                                                                                                                                                  junit断言总结本文参考了http://blog.csdn.net/wangpeng047/article/details/9628449一 junit断言1.JUnit框架用一组assert方法封 ...

                                                                                                                                                                                                                2. Hamcrest匹配器框架

                                                                                                                                                                                                                  其实在之前的文章中已经使用过 Hamcrest 匹配器框架,本篇文章将系统的介绍它的使用. 为什么要用Hamcrest匹配器框架 Hamcrest是一款软件测试框架, 可以通过现有的匹配器类检查代码中 ...

                                                                                                                                                                                                                3. Mockito 2 参数匹配器

                                                                                                                                                                                                                  Mockito 通过使用 equals() 这种自然的 Java 样式来校验参数值.有时候,当需要有其他一些灵活性的时候,你可能会要求使用参数匹配(argument matchers). 请参考下面的 ...

                                                                                                                                                                                                                4. [Google Guava]字符串处理:连接器、拆分器、字符匹配器

                                                                                                                                                                                                                  一.连接器[Joiner] 二.拆分器[Splitter] 三.字符匹配器[CharMatcher] 四.字符集[Charsets] Charsets:针对所有Java平台都要保证支持的六种字符集提供 ...

                                                                                                                                                                                                                5. EassyMock实践 自定义参数匹配器

                                                                                                                                                                                                                  虽然easymock中提供了大量的方法来进行参数匹配,但是对于一些特殊场合比如参数是复杂对象而又不能简单的通过equals()方法来比较,这些现有的参数匹配器就无能为力了.easymock为此提供了I ...

                                                                                                                                                                                                                6. 前端测试框架Jest系列教程 -- Matchers(匹配器)

                                                                                                                                                                                                                  写在前面: 匹配器(Matchers)是Jest中非常重要的一个概念,它可以提供很多种方式来让你去验证你所测试的返回值,本文重点介绍几种常用的Matcher,其他的可以通过官网api文档查看. 常用的 ...

                                                                                                                                                                                                                7. Flask入门之自定义过滤器(匹配器)

                                                                                                                                                                                                                  1.  动态路由的匹配器? 不知道这种叫啥名,啥用法,暂且叫做匹配器吧. Flask自带的匹配器可以说有四种吧(保守数字,就我学到的) 动态路由本身,可以传任何参数字符串或者数字,如:<user ...

                                                                                                                                                                                                                8. 【Jest】笔记二:Matchers匹配器

                                                                                                                                                                                                                  一.前言 什么是匹配器? 我们可以把匹配器看成,testng断言,这么理解就可以了 二.常用的匹配器 test('two plus two is four', () => { expect(2 ...

                                                                                                                                                                                                                9. BF匹配器

                                                                                                                                                                                                                  对于BF匹配器,首先我们得用cv2.BFMatcher()创建BF匹配器对象.它取两个可选参数,第一个是normType.它指定要使用的距离量度.默认是cv2.NORM_L2.对于SIFT,SURF很 ...

                                                                                                                                                                                                                随机推荐

                                                                                                                                                                                                                1. Apache Camel 与 Spring Boot 集成,通过FTP定时采集、处理文件 (转)

                                                                                                                                                                                                                  1.概要: 本项目主要是通过在Spring平台上配置Camel.FTP,实现定时从FTP服务器下载文件到本地.解析文件.存入数据库等功能. 2.搭建空项目: Spring Boot有几种自动生成空项目 ...

                                                                                                                                                                                                                2. 通过IP地址訪问Jbossserver上的应用

                                                                                                                                                                                                                  版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/liu765023051/article/details/28882533 环境介绍 Web项目中.在 ...

                                                                                                                                                                                                                3. Java“类”的内存分配_case1

                                                                                                                                                                                                                4. 什么是Hessian协议呢?

                                                                                                                                                                                                                  什么是Hessian协议呢? 目前,Web服务技术是解决异构平台系统的集成及互操作问题的主流技术. 它所基于的XML已经是Internet上交换数据的实际标准,基于通用的进程间通信协议和网络传输协议屏 ...

                                                                                                                                                                                                                5. 不插字段,直接利用OracleSpatial计算

                                                                                                                                                                                                                  select to_char(regexp_replace(sdo_util.to_gmlgeometry(sdo_geom.sdo_difference( SDO_GEOMETRY ( 2003, ...

                                                                                                                                                                                                                6. JS遍历数组

                                                                                                                                                                                                                  for 如果用var会造成变量声明提前等问题for(var i = 1; i <= arr.length; i++){ console.log(arr[i - 1]);} for(let i = ...

                                                                                                                                                                                                                7. H3C MDI/MDIX

                                                                                                                                                                                                                8. Activity学习(二):Activity的启动模式(转载)

                                                                                                                                                                                                                  在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...

                                                                                                                                                                                                                9. Example-09-01

                                                                                                                                                                                                                  #define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <cstring> int min(int a, int ...

                                                                                                                                                                                                                10. jieba分词工具的使用方法

                                                                                                                                                                                                                  作为我这样的萌新,python代码的第一步是:#coding=utf-8 环境:python3.5+jieba0.39 一.jieba包安装方法: 方法1:使用conda安装 conda instal ...