zoukankan      html  css  js  c++  java
  • JUnit4---Hamcrest匹配器常用方法总结

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

    一.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
    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 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.  
      }


  • 相关阅读:
    字体图标的制作
    vs code 本地调试配置
    瀑布流
    web组件化开发第一天
    超时调用和间歇调用
    递归 闭包
    继承
    面向对象的程序设计
    function类型
    Date类型
  • 原文地址:https://www.cnblogs.com/xinxihua/p/13899727.html
Copyright © 2011-2022 走看看