欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JUnit4 Hamcrest匹配器常用方法總結(jié)

 更新時(shí)間:2020年11月06日 09:53:54   作者:shuzihua  
這篇文章主要介紹了JUnit4 Hamcrest匹配器常用方法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一.Hamcrest是什么?

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

Hamcrest 是一個(gè)為了測(cè)試為目的,且能組合成靈活表達(dá)式的匹配器類庫(kù)。

二.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.

三.常用方法介紹

一般,在項(xiàng)目中導(dǎo)入hamcrest-core.jar, hamcrest-library.jar就能滿足使用。

Eclipse新建一個(gè)JUnit test case; 測(cè)試類導(dǎo)入

import static org.hamcrest.Matchers.*;

測(cè)試方法如下:

@Test
public void testHamcrestMatchers() {
	// 核心匹配
	// allOf: 所有條件都必須滿足,相當(dāng)于&&
	assertThat("myname", allOf(startsWith("my"), containsString("name")));
	// anyOf: 其中一個(gè)滿足就通過(guò), 相當(dāng)于||
	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: 每個(gè)元素都需滿足特定條件
	assertThat(Arrays.asList("my", "mine"), everyItem(startsWith("m")));
	// hasItem: 是否有這個(gè)元素
	assertThat(Arrays.asList("my", "mine"), hasItem("my"));
	// hasItems: 包含多個(gè)元素
	assertThat(Arrays.asList("my", "mine", "your"), hasItems("your", "my"));
	// is: is(equalTo(x))或is(instanceOf(clazz.class))的簡(jiǎn)寫
	assertThat("myname", is("myname"));
	assertThat("mynmae", is(String.class));
	// anything(): 任何情況下,都匹配正確
	assertThat("myname", anything());
	// not: 否為真,相當(dāng)于!
	assertThat("myname", is(not("you")));
	// nullValue(): 值為空
	String str = null;
	assertThat(str, is(nullValue()));
	// notNullValue(): 值不為空
	String str2 = "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(new String[] {
		"a", "b"
	}
	, equalTo(new String[] {
		"a", "b"
	}
	));
	// equalToIgnoringCase: 比較時(shí),忽略大小寫
	assertThat("myname", equalToIgnoringCase("MYNAME"));
	// equalToIgnoringWhiteSpace: 比較時(shí), 首尾空格忽略, 比較時(shí)中間用單個(gè)空格
	assertThat(" my t name ", equalToIgnoringWhiteSpace(" my name "));
	// isOneOf: 是否為其中之一
	assertThat("myname", isOneOf("myname", "yourname"));
	// isIn: 是否為其成員
	assertThat("myname", isIn(new String[]{
		"myname", "yourname"
	}
	));
	// toString() 返回值校驗(yàn)
	assertThat(333, hasToString(equalTo("333")));
	// 數(shù)值匹配
	// closeTo: [operand-error, operand+error], Double或BigDecimal類型
	assertThat(3.14, closeTo(3, 0.5));
	assertThat(new BigDecimal("3.14"), is(closeTo(new BigDecimal("3"), new BigDecimal("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: 數(shù)組長(zhǎng)度相等且對(duì)應(yīng)元素也相等
	assertThat(new Integer[]{
		1, 2, 3
	}
	, is(array(equalTo(1), equalTo(2), equalTo(3))));
	// hasItemInArray: 數(shù)組是否包含特定元素
	assertThat(new String[]{
		"my", "you"
	}
	, hasItemInArray(startsWith("y")));
	// arrayContainingInAnyOrder, 順序無(wú)關(guān),長(zhǎng)度要一致
	assertThat(new String[]{
		"my", "you"
	}
	, arrayContainingInAnyOrder("you", "my"));
	// arrayContaining: 順序,長(zhǎng)度一致
	assertThat(new String[]{
		"my", "you"
	}
	, arrayContaining("my", "you"));
	// arrayWithSize: 數(shù)組長(zhǎng)度
	assertThat(new String[]{
		"my", "you"
	}
	, arrayWithSize(2));
	// emptyArray: 空數(shù)組
	assertThat(new String[0], emptyArray());
	// hasSize: 集合大小
	assertThat(Arrays.asList("my", "you"), hasSize(equalTo(2)));
	// empty: 空集合
	assertThat(new ArrayList<String>(), is(empty()));
	// isIn: 是否為集合成員
	assertThat("myname", isIn(Arrays.asList("myname", "yourname")));
	// Map匹配
	Map<String, String> myMap = new HashMap<String, String>();
	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")));
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java代碼規(guī)范之不合理命名與重復(fù)代碼示例詳解

    java代碼規(guī)范之不合理命名與重復(fù)代碼示例詳解

    這篇文章主要為大家介紹了java代碼規(guī)范之不合理命名與重復(fù)代碼示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Java?批量生成條碼的示例代碼

    Java?批量生成條碼的示例代碼

    這篇文章主要介紹了Java?批量生成條碼的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • 詳解@AliasFor注解的使用與注意事項(xiàng)

    詳解@AliasFor注解的使用與注意事項(xiàng)

    @AliasFor注解是在spring源碼當(dāng)中提供的,見(jiàn)名知義,他是為了別名而自定義的注解,下面我們來(lái)看看它的使用與注意事項(xiàng),感興趣的小伙伴可以了解一下
    2023-08-08
  • java中的?HashMap?的加載因子是0.75原理探討

    java中的?HashMap?的加載因子是0.75原理探討

    在Java中,HashMap是一種常用的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)鍵值對(duì),它的設(shè)計(jì)目標(biāo)是提供高效的插入、查找和刪除操作,在HashMap的實(shí)現(xiàn)中,加載因子(Load?Factor)是一個(gè)重要的概念,本文將探討為什么Java中的HashMap的加載因子被設(shè)置為0.75
    2023-10-10
  • 線程阻塞喚醒工具 LockSupport使用詳解

    線程阻塞喚醒工具 LockSupport使用詳解

    這篇文章主要為大家介紹了線程阻塞喚醒工具LockSupport使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 分析mybatis運(yùn)行原理

    分析mybatis運(yùn)行原理

    Mybatis是一個(gè)優(yōu)秀的持久層框架,它對(duì)JDBC操作數(shù)據(jù)庫(kù)的過(guò)程進(jìn)行封裝,使開發(fā)者只需要關(guān)注sql本身。我們?cè)瓉?lái)使用JDBC操作數(shù)據(jù)庫(kù),需要手動(dòng)的寫代碼去注冊(cè)驅(qū)動(dòng)、獲取connection、獲取statement等等,現(xiàn)在Mybaits幫助我們把這些事情做了,我們只需要關(guān)注我們的業(yè)務(wù)sql即可
    2021-06-06
  • 自己動(dòng)手編寫一個(gè)Mybatis插件之Mybatis脫敏插件

    自己動(dòng)手編寫一個(gè)Mybatis插件之Mybatis脫敏插件

    這篇文章主要介紹了自己動(dòng)手編寫一個(gè)Mybatis插件之Mybatis脫敏插件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 解決springboot生成bean名稱沖突(AnnotationBeanNameGenerator)

    解決springboot生成bean名稱沖突(AnnotationBeanNameGenerator)

    這篇文章主要介紹了解決springboot生成bean名稱沖突(AnnotationBeanNameGenerator),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java正則表達(dá)式判斷是否包含數(shù)字、字母、特殊字符及中文的多種方法

    Java正則表達(dá)式判斷是否包含數(shù)字、字母、特殊字符及中文的多種方法

    這篇文章主要給大家介紹了關(guān)于Java正則表達(dá)式判斷是否包含數(shù)字、字母、特殊字符及中文的多種方法,Java正則表達(dá)式在字符串處理和模式匹配中扮演著重要角色,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • IDEA SSM框架整合配置及步驟詳解

    IDEA SSM框架整合配置及步驟詳解

    這篇文章主要介紹了IDEA SSM框架整合配置以及步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03

最新評(píng)論