您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > junit
探索JUnit 4.4特性
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/3/12 16:00:38 ] 推薦標(biāo)簽:

    如何使用 assertThat

    JUnit 4.4 自帶了一些 Hamcrest 的匹配符 Matcher,但是只有有限的幾個(gè),在類(lèi) org.hamcrest.CoreMatchers 中定義,要想使用他們,必須導(dǎo)入包 org.hamcrest.CoreMatchers.*.

    如果想使用一些其他更多的匹配符 Matcher,可以從 Hamcrest 網(wǎng)頁(yè)下載 hamcrest-library-1.1.jar 和 hamcrest-core-1.1.jar,并將其加入到工程庫(kù)中,所有的匹配符都在類(lèi) org.hamcrest.Matchers 中定義,要想使用,必須得在代碼中 import static org.hamcrest.Matchers.*;。如果使用外部的匹配符,好不要再使用 JUnit 4.4 自帶的匹配符了,因?yàn)檫@樣容易導(dǎo)致匹配符 Matcher 重復(fù)定義,編譯可能會(huì)出錯(cuò)(ambiguous for the type)。 JUnit 4.4 允許使用 Hamcrest 來(lái)使用更多的匹配符,這還是 JUnit 第一次允許在自己的工程中使用第三方類(lèi)。

    注意:

    1、assertThat 仍然是斷言語(yǔ)句,所以要想使用,必須還得 import static org.junit.Assert.*;;

    2、雖然 assertThat 可以代替以前所有的斷言語(yǔ)句,但是以前的所有 assert 語(yǔ)句仍然可以繼續(xù)使用;清單 5 列舉了大部分 assertThat 的使用例子:

    清單 5 assertThat 使用舉例

//一般匹配符

// allOf匹配符表明如果接下來(lái)的所有條件必須都成立測(cè)試才通過(guò),相當(dāng)于“與”(&&)
assertThat( testedNumber, allOf( greaterThan(8), lessThan(16) ) );
// anyOf匹配符表明如果接下來(lái)的所有條件只要有一個(gè)成立則測(cè)試通過(guò),相當(dāng)于“或”(||)
assertThat( testedNumber, anyOf( greaterThan(16), lessThan(8) ) );
// anything匹配符表明無(wú)論什么條件,永遠(yuǎn)為true
assertThat( testedNumber, anything() );
// is匹配符表明如果前面待測(cè)的object等于后面給出的object,則測(cè)試通過(guò)
assertThat( testedString, is( "developerWorks" ) );
// not匹配符和is匹配符正好相反,表明如果前面待測(cè)的object不等于后面給出的object,則測(cè)試通過(guò)
assertThat( testedString, not( "developerWorks" ) );

//字符串相關(guān)匹配符

// containsString匹配符表明如果測(cè)試的字符串testedString包含子字符串"developerWorks"則測(cè)試通過(guò)
assertThat( testedString, containsString( "developerWorks" ) );
// endsWith匹配符表明如果測(cè)試的字符串testedString以子字符串"developerWorks"結(jié)尾則測(cè)試通過(guò)
assertThat( testedString, endsWith( "developerWorks" ) );
// startsWith匹配符表明如果測(cè)試的字符串testedString以子字符串"developerWorks"開(kāi)始則測(cè)試通過(guò)
assertThat( testedString, startsWith( "developerWorks" ) );
// equalTo匹配符表明如果測(cè)試的testedValue等于expectedValue則測(cè)試通過(guò),equalTo可以測(cè)試數(shù)值之間,字
//符串之間和對(duì)象之間是否相等,相當(dāng)于Object的equals方法
assertThat( testedValue, equalTo( expectedValue ) );
// equalToIgnoringCase匹配符表明如果測(cè)試的字符串testedString在忽略大小寫(xiě)的情況下等于
//"developerWorks"則測(cè)試通過(guò)
assertThat( testedString, equalToIgnoringCase( "developerWorks" ) );
// equalToIgnoringWhiteSpace匹配符表明如果測(cè)試的字符串testedString在忽略頭尾的任意個(gè)空格的情況下等
//于"developerWorks"則測(cè)試通過(guò),注意:字符串中的空格不能被忽略
assertThat( testedString, equalToIgnoringWhiteSpace( "developerWorks" ) );

//數(shù)值相關(guān)匹配符

// closeTo匹配符表明如果所測(cè)試的浮點(diǎn)型數(shù)testedDouble在20.0±0.5范圍之內(nèi)則測(cè)試通過(guò)
assertThat( testedDouble, closeTo( 20.0, 0.5 ) );
// greaterThan匹配符表明如果所測(cè)試的數(shù)值testedNumber大于16.0則測(cè)試通過(guò)
assertThat( testedNumber, greaterThan(16.0) );
// lessThan匹配符表明如果所測(cè)試的數(shù)值testedNumber小于16.0則測(cè)試通過(guò)
assertThat( testedNumber, lessThan (16.0) );
// greaterThanOrEqualTo匹配符表明如果所測(cè)試的數(shù)值testedNumber大于等于16.0則測(cè)試通過(guò)
assertThat( testedNumber, greaterThanOrEqualTo (16.0) );
// lessThanOrEqualTo匹配符表明如果所測(cè)試的數(shù)值testedNumber小于等于16.0則測(cè)試通過(guò)
assertThat( testedNumber, lessThanOrEqualTo (16.0) );

//collection相關(guān)匹配符

// hasEntry匹配符表明如果測(cè)試的Map對(duì)象mapObject含有一個(gè)鍵值為"key"對(duì)應(yīng)元素值為"value"的Entry項(xiàng)則
//測(cè)試通過(guò)
assertThat( mapObject, hasEntry( "key", "value" ) );
// hasItem匹配符表明如果測(cè)試的迭代對(duì)象iterableObject含有元素“element”項(xiàng)則測(cè)試通過(guò)
assertThat( iterableObject, hasItem ( "element" ) );
// hasKey匹配符表明如果測(cè)試的Map對(duì)象mapObject含有鍵值“key”則測(cè)試通過(guò)
assertThat( mapObject, hasKey ( "key" ) );
// hasValue匹配符表明如果測(cè)試的Map對(duì)象mapObject含有元素值“value”則測(cè)試通過(guò)
assertThat( mapObject, hasValue ( "key" ) );

上一頁(yè)1234567下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd