JUnit4 Hamcrest匹配器常用方法总结
一.Hamcrest是什么?
Hamcrestisalibraryofmatchers,whichcanbecombinedintocreateflexibleexpressionsofintentintests.
Hamcrest是一个为了测试为目的,且能组合成灵活表达式的匹配器类库。
二.Hamcrestjar包
- hamcrest-core.jar--ThisisthecoreAPItobeusedbythird-partyframeworkproviders.Thisincludestheafoundationsetofmatcherimplementationsforcommonoperations.ThisAPIisstableandwillrarelychange.Youwillneedthislibraryasaminimum.
- hamcrest-library.jar--Theever-growinglibraryofMatcherimplementations.Thiswillgrowbetweenreleases.
- hamcrest-generator.jar--AtooltoallowmanyMatcherimplementationstobecombinedintoasingleclasssousersdon'thavetoremembermanyclasses/packagestoimport.Generatescode.
- hamcrest-integration.jar--ProvidesintegrationbetweenHamcrestandothertestingtools,includingJUnit(3and4),TestNG,jMockandEasyMock.
Alternatively,ifyoudon'tcare:
hamcrest-all.jar--Includesalloftheabove.
三.常用方法介绍
一般,在项目中导入hamcrest-core.jar,hamcrest-library.jar就能满足使用。
Eclipse新建一个JUnittestcase;测试类导入
importstaticorg.hamcrest.Matchers.*;
测试方法如下:
@Test publicvoidtestHamcrestMatchers(){ //核心匹配 //allOf:所有条件都必须满足,相当于&& assertThat("myname",allOf(startsWith("my"),containsString("name"))); //anyOf:其中一个满足就通过,相当于|| assertThat("myname",anyOf(startsWith("na"),containsString("name"))); //both:&& assertThat("myname",both(containsString("my")).and(containsString("me"))); //either:两者之一 assertThat("myname",either(containsString("my")).or(containsString("you"))); //everyItem:每个元素都需满足特定条件 assertThat(Arrays.asList("my","mine"),everyItem(startsWith("m"))); //hasItem:是否有这个元素 assertThat(Arrays.asList("my","mine"),hasItem("my")); //hasItems:包含多个元素 assertThat(Arrays.asList("my","mine","your"),hasItems("your","my")); //is:is(equalTo(x))或is(instanceOf(clazz.class))的简写 assertThat("myname",is("myname")); assertThat("mynmae",is(String.class)); //anything():任何情况下,都匹配正确 assertThat("myname",anything()); //not:否为真,相当于! assertThat("myname",is(not("you"))); //nullValue():值为空 Stringstr=null; assertThat(str,is(nullValue())); //notNullValue():值不为空 Stringstr2="123"; assertThat(str2,is(notNullValue())); //字符串匹配 //containsString:包含字符串 assertThat("myname",containsString("na")); //stringContainsInOrder:顺序包含,“my”必须在“me”前面 assertThat("myname",stringContainsInOrder(Arrays.asList("my","me"))); //endsWith:后缀 assertThat("myname",endsWith("me")); //startsWith:前缀 assertThat("myname",startsWith("my")); //isEmptyString():空字符串 assertThat("",isEmptyString()); //equalTo:值相等,Object.equals(Object) assertThat("myname",equalTo("myname")); assertThat(newString[]{ "a","b" } ,equalTo(newString[]{ "a","b" } )); //equalToIgnoringCase:比较时,忽略大小写 assertThat("myname",equalToIgnoringCase("MYNAME")); //equalToIgnoringWhiteSpace:比较时,首尾空格忽略,比较时中间用单个空格 assertThat("mytname",equalToIgnoringWhiteSpace("myname")); //isOneOf:是否为其中之一 assertThat("myname",isOneOf("myname","yourname")); //isIn:是否为其成员 assertThat("myname",isIn(newString[]{ "myname","yourname" } )); //toString()返回值校验 assertThat(333,hasToString(equalTo("333"))); //数值匹配 //closeTo:[operand-error,operand+error],Double或BigDecimal类型 assertThat(3.14,closeTo(3,0.5)); assertThat(newBigDecimal("3.14"),is(closeTo(newBigDecimal("3"),newBigDecimal("0.5")))); //comparesEqualTo:compareTo比较值 assertThat(2,comparesEqualTo(2)); //greaterThan:大于 assertThat(2,greaterThan(0)); //greaterThanOrEqualTo:大于等于 assertThat(2,greaterThanOrEqualTo(2)); //lessThan:小于 assertThat(0,lessThan(2)); //lessThanOrEqualTo:小于等于 assertThat(0,lessThanOrEqualTo(0)); //集合匹配 //array:数组长度相等且对应元素也相等 assertThat(newInteger[]{ 1,2,3 } ,is(array(equalTo(1),equalTo(2),equalTo(3)))); //hasItemInArray:数组是否包含特定元素 assertThat(newString[]{ "my","you" } ,hasItemInArray(startsWith("y"))); //arrayContainingInAnyOrder,顺序无关,长度要一致 assertThat(newString[]{ "my","you" } ,arrayContainingInAnyOrder("you","my")); //arrayContaining:顺序,长度一致 assertThat(newString[]{ "my","you" } ,arrayContaining("my","you")); //arrayWithSize:数组长度 assertThat(newString[]{ "my","you" } ,arrayWithSize(2)); //emptyArray:空数组 assertThat(newString[0],emptyArray()); //hasSize:集合大小 assertThat(Arrays.asList("my","you"),hasSize(equalTo(2))); //empty:空集合 assertThat(newArrayList(),is(empty())); //isIn:是否为集合成员 assertThat("myname",isIn(Arrays.asList("myname","yourname"))); //Map匹配 Map myMap=newHashMap (); myMap.put("name","john"); //hasEntry:key&&value匹配 assertThat(myMap,hasEntry("name","john")); //hasKey:key匹配 assertThat(myMap,hasKey(equalTo("name"))); //hasValue:value匹配 assertThat(myMap,hasValue(equalTo("john"))); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。