zoukankan      html  css  js  c++  java
  • Hamcrest

        Hamcrest比起JUnit的assert系列方法来,有更好的可读性,它按照参数从左到右的符合自然的顺序来展示,如actual is(notNullValue()),是对测试断言的改进。同时不会被哪个参数是actual,哪个是expect而混淆。除此之外,Hamcrest提供了更丰富的比较方法,不仅包括基本类型,也包括对象判断、集合/数组判断等一系列方法,同时还有allOf/anyOf这样的组合判断,甚至有判断xml中是否存在相应xpath的判断。

        所有的Hamcrest支持的assert全部在org.hamcrest.Matchers类下的静态方法。下面是几个使用例子:

        

    public class CoreShowcase {
        @Test
        public void test(){
            assertThat(true,is(true));
            assertThat(false,is(false));
    
            assertThat("2",is(equalTo("2")));
            assertThat(2,is(equalTo(2)));
            assertThat("aBcD",is(equalToIgnoringCase("abcd")));
            assertThat("",isEmptyOrNullString());
    
            assertThat(null,is(nullValue()));
            assertThat(2,is(notNullValue()));
            assertThat(2,greaterThan(1));
            assertThat(2.01,closeTo(2,0.01));
    
            assertThat("xyz",is(anything()));
        }
    }
    

      

    public class ObjectShowcase {
        @Test
        public void test(){
            Person my=new Person("341024","ZhangKe",32);
    
            assertThat(my,instanceOf(Person.class));
            assertThat(my,not(sameInstance(new Person("341024"))));
            assertThat(my,hasToString(equalTo("341024")));
            assertThat(my,hasProperty("name"));
        }
    
        class Person{
            private String idCard;
            private String name;
            private int age;
    
            public Person(String idCard) {
                this.idCard = idCard;
            }
    
            public Person(String idCard, String name, int age) {
                this.idCard = idCard;
                this.name = name;
                this.age = age;
            }
    
            public String getIdCard() {
                return idCard;
            }
    
            public String getName() {
                return name;
            }
    
            public int getAge() {
                return age;
            }
    
            @Override
            public String toString() {
                return idCard;
            }
    
            @Override
            public boolean equals(Object o) {
                if (this == o) return true;
                if (o == null || getClass() != o.getClass()) return false;
    
                Person person = (Person) o;
    
                if (!idCard.equals(person.idCard)) return false;
    
                return true;
            }
    
            @Override
            public int hashCode() {
                return idCard.hashCode();
            }
        }
    }
    

      

    public class CombineShowcase {
        @Test
        public void test(){
            //in both/either must have the same type
            assertThat("result", both(containsString("r")).and(containsString("u")));
            assertThat("result",either(startsWith("x")).or(containsString("r")));
    
            assertThat("result",allOf(notNullValue(),containsString("s")));
            assertThat("result",anyOf(notNullValue(),isEmptyString()));
        }
    }
    

      

  • 相关阅读:
    magento 去掉index.php
    TCP三次握手与四次挥手
    <Jper和Iperf>的安装及使用
    【Python】安装方法小结
    【ubuntu】日常网络配置信息的查看及修改
    DNS解析
    【Dig工具】
    【ping/tracert】的简单使用
    【VMvare】yum在线源
    配置文件加载
  • 原文地址:https://www.cnblogs.com/mengheng/p/4190273.html
Copyright © 2011-2022 走看看