其他分享
首页 > 其他分享> > JUnit4---Hamcrest匹配器常用方法总结

JUnit4---Hamcrest匹配器常用方法总结

作者:互联网

JUnit4---Hamcrest匹配器常用方法总结

 2015-01-07 16:49:20  5323  收藏 5 分类专栏: junit 版权

一.Hamcrest是什么?

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

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

二.Hamcrest jar包

 

 

Alternatively, if you don't care:

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

import static org.hamcrest.Matchers.*;

测试方法如下:

 

  1.   @Test
  2.   public void testHamcrestMatchers() {
  3.   // 核心匹配
  4.   // allOf: 所有条件都必须满足,相当于&&
  5.   assertThat("myname", allOf(startsWith("my"), containsString("name")));
  6.   // anyOf: 其中一个满足就通过, 相当于||
  7.   assertThat("myname", anyOf(startsWith("na"), containsString("name")));
  8.   // both: &&
  9.   assertThat("myname", both(containsString("my")).and(containsString("me")));
  10.   // either: 两者之一
  11.   assertThat("myname", either(containsString("my")).or(containsString("you")));
  12.   // everyItem: 每个元素都需满足特定条件
  13.   assertThat(Arrays.asList("my", "mine"), everyItem(startsWith("m")));
  14.   // hasItem: 是否有这个元素
  15.   assertThat(Arrays.asList("my", "mine"), hasItem("my"));
  16.   // hasItems: 包含多个元素
  17.   assertThat(Arrays.asList("my", "mine", "your"), hasItems("your", "my"));
  18.   // is: is(equalTo(x))或is(instanceOf(clazz.class))的简写
  19.   assertThat("myname", is("myname"));
  20.   assertThat("mynmae", is(String.class));
  21.   // anything(): 任何情况下,都匹配正确
  22.   assertThat("myname", anything());
  23.   // not: 否为真,相当于!
  24.   assertThat("myname", is(not("you")));
  25.   // nullValue(): 值为空
  26.   String str = null;
  27.   assertThat(str, is(nullValue()));
  28.   // notNullValue(): 值不为空
  29.   String str2 = "123";
  30.   assertThat(str2, is(notNullValue()));
  31.    
  32.    
  33.   // 字符串匹配
  34.   // containsString:包含字符串
  35.   assertThat("myname", containsString("na"));
  36.   // stringContainsInOrder: 顺序包含,“my”必须在“me”前面
  37.   assertThat("myname", stringContainsInOrder(Arrays.asList("my", "me")));
  38.   // endsWith: 后缀
  39.   assertThat("myname", endsWith("me"));
  40.   // startsWith: 前缀
  41.   assertThat("myname", startsWith("my"));
  42.   // isEmptyString(): 空字符串
  43.   assertThat("", isEmptyString());
  44.   // equalTo: 值相等, Object.equals(Object)
  45.   assertThat("myname", equalTo("myname"));
  46.   assertThat(new String[] {"a", "b"}, equalTo(new String[] {"a", "b"}));
  47.   // equalToIgnoringCase: 比较时,忽略大小写
  48.   assertThat("myname", equalToIgnoringCase("MYNAME"));
  49.   // equalToIgnoringWhiteSpace: 比较时, 首尾空格忽略, 比较时中间用单个空格
  50.   assertThat(" my \t name ", equalToIgnoringWhiteSpace(" my name "));
  51.   // isOneOf: 是否为其中之一
  52.   assertThat("myname", isOneOf("myname", "yourname"));
  53.   // isIn: 是否为其成员
  54.   assertThat("myname", isIn(new String[]{"myname", "yourname"}));
  55.   // toString() 返回值校验
  56.   assertThat(333, hasToString(equalTo("333")));
  57.    
  58.    
  59.   // 数值匹配
  60.   // closeTo: [operand-error, operand+error], Double或BigDecimal类型
  61.   assertThat(3.14, closeTo(3, 0.5));
  62.   assertThat(new BigDecimal("3.14"), is(closeTo(new BigDecimal("3"), new BigDecimal("0.5"))));
  63.   // comparesEqualTo: compareTo比较值
  64.   assertThat(2, comparesEqualTo(2));
  65.   // greaterThan: 大于
  66.   assertThat(2, greaterThan(0));
  67.   // greaterThanOrEqualTo: 大于等于
  68.   assertThat(2, greaterThanOrEqualTo(2));
  69.   // lessThan: 小于
  70.   assertThat(0, lessThan(2));
  71.   // lessThanOrEqualTo: 小于等于
  72.   assertThat(0, lessThanOrEqualTo(0));
  73.    
  74.    
  75.    
  76.   // 集合匹配
  77.   // array: 数组长度相等且对应元素也相等
  78.   assertThat(new Integer[]{1, 2, 3}, is(array(equalTo(1), equalTo(2), equalTo(3))));
  79.   // hasItemInArray: 数组是否包含特定元素
  80.   assertThat(new String[]{"my", "you"}, hasItemInArray(startsWith("y")));
  81.   // arrayContainingInAnyOrder, 顺序无关,长度要一致
  82.   assertThat(new String[]{"my", "you"}, arrayContainingInAnyOrder("you", "my"));
  83.   // arrayContaining: 顺序,长度一致
  84.   assertThat(new String[]{"my", "you"}, arrayContaining("my", "you"));
  85.   // arrayWithSize: 数组长度
  86.   assertThat(new String[]{"my", "you"}, arrayWithSize(2));
  87.   // emptyArray: 空数组
  88.   assertThat(new String[0], emptyArray());
  89.   // hasSize: 集合大小
  90.   assertThat(Arrays.asList("my", "you"), hasSize(equalTo(2)));
  91.   // empty: 空集合
  92.   assertThat(new ArrayList<String>(), is(empty()));
  93.   // isIn: 是否为集合成员
  94.   assertThat("myname", isIn(Arrays.asList("myname", "yourname")));
  95.   // Map匹配
  96.   Map<String, String> myMap = new HashMap<String, String>();
  97.   myMap.put("name", "john");
  98.   // hasEntry: key && value匹配
  99.   assertThat(myMap, hasEntry("name", "john"));
  100.   // hasKey: key匹配
  101.   assertThat(myMap, hasKey(equalTo("name")));
  102.   // hasValue: value匹配
  103.   assertThat(myMap, hasValue(equalTo("john")));
  104.   }


 

标签:assertThat,String,equalTo,myname,---,new,JUnit4,my,Hamcrest
来源: https://www.cnblogs.com/xinxihua/p/13899727.html