zoukankan      html  css  js  c++  java
  • Usage and Idioms——Matchers and assertthat

    assertThat

    一种插入机制,语法如下:

    assertThat([value], [matcher statement]);

    例如:

    assertThat(x, is(3));

    assertThat(x, is(not(4)));

    assertThat(responseString, either(containsString("color")).or(containsString("colour")));

    assertThat(myList, hasItem("3"));

    这个语法的优点:

    更加易读易写:assertThat 以“主体+动词+对象”的思维形式,比如:"x is 3";而不是像assertEquals一样,采用“动词+对象+主体”的思维形式,比如:“equals 3 x"

    易于联合使用:任何匹配描述都可以这样用:not(s)用来否定;either(s).or(t)用来联合;each(s)用来收藏;afterFiveSeconds(s)用来在用户中联合

    其中,易读性的优点,可比较下列代码:

    assertTrue(responseString.contains("color") || responseString.contains("colour"));
    // ==> failure message: 
    // java.lang.AssertionError:
    
    
    assertThat(responseString, anyOf(containsString("color"), containsString("colour")));
    // ==> failure message:
    // java.lang.AssertionError: 
    // Expected: (a string containing "color" or a string containing "colour")
    //      got: "Please choose a font"



    我们决定在Junit中直接加入 这个API,它是个可扩展且易读的语法,而且它能够实现新功能。原有的插入语法永远不会过时,开发们还是会继续用assertEquals, assertTrue等等。assertThat语法的第二个参数是Matcher,通过静态导入的方式使程序包含我们想用的Matchers。用法如下:

    import static org.hamcrest.CoreMatchers.is;
    或者
    import static org.hamcrest.CoreMatchers.*;

    为了兼容更多的可能的matchers,我们决定加入来自hamcrest-coreHamcrest project的类,第三方类被加入JUnit这还是第一次 。
    JUnit一般自带几个matchers , 定义在org.hamcrest.CoreMatchersorg.junit.matchers.JUnitMatchers 。
    为了应用更多,请参考下载完整的hamcrest 包:

    对于如何比较字符串和数组以及显示他们的具体区别,JUnit给予了特殊支持。虽然这个还不能用assertThat来实现,但我们希望在未来的发布中能加入这两个插入方法。

    JUnit Matchers

    JUnit includes useful matchers for use with the assertThat method, but they are not currently included in the basic CoreMatchers class from hamcrest.

    Hamcrest CoreMatchers

    Useful Hamcrest CoreMatchers are included in the JUnit distribution

    Thirdparty Matchers

    
    

    Other, potentially Matchers out there include

    
    
    
     


  • 相关阅读:
    Python爬虫之selenium各种注意报错
    以后的路还很长
    巧学DBhelper
    怎么学习程序语言
    C# winform 实现图片轮播
    P6477 [NOI Online #2 提高组]子序列问题(民间数据) 题解
    NOI Online Round 2 TG 游记
    「EZEC」 Round1 开学信心赛 游记
    P6023 走路 题解
    P6022 快乐水 题解
  • 原文地址:https://www.cnblogs.com/insist8089/p/6396939.html
Copyright © 2011-2022 走看看