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

    如何使用 assertThat

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

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

    注意:

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

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

    清單 5 assertThat 使用舉例

//一般匹配符

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

//字符串相關匹配符

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

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

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

//collection相關匹配符

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

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