您的位置:軟件測(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)簽:

    優(yōu)點(diǎn) 4:可以將這些 Matcher 匹配符聯(lián)合起來(lái)靈活使用,達(dá)到更多目的。如清單 3 所示:

    清單 3 Matcher 匹配符聯(lián)合使用

// 聯(lián)合匹配符not和equalTo表示“不等于”
assertThat( something, not( equalTo( "developer" ) ) );
// 聯(lián)合匹配符not和containsString表示“不包含子字符串”
assertThat( something, not( containsString( "Works" ) ) );
// 聯(lián)合匹配符anyOf和containsString表示“包含任何一個(gè)子字符串”
assertThat(something, anyOf(containsString("developer"), containsString("Works")));

    優(yōu)點(diǎn) 5:錯(cuò)誤信息更加易懂、可讀且具有描述性(descriptive)。

    JUnit 4.4 以前的版本默認(rèn)出錯(cuò)后不會(huì)拋出額外提示信息,如:

assertTrue( s.indexOf("developer") > -1 || s.indexOf("Works") > -1 );

    如果該斷言出錯(cuò),只會(huì)拋出無(wú)用的錯(cuò)誤信息,如:junit.framework.AssertionFailedError:null.

    如果想在出錯(cuò)時(shí)想打印出一些有用的提示信息,必須得程序員另外手動(dòng)寫(xiě),如:

assertTrue( "Expected a string containing 'developer' or 'Works'",
    s.indexOf("developer") > -1 || s.indexOf("Works") > -1 );

    非常的不方便,而且需要額外代碼。

    JUnit 4.4 會(huì)默認(rèn)自動(dòng)提供一些可讀的描述信息,如清單 4 所示:

    清單 4 JUnit 4.4 默認(rèn)提供一些可讀的描述性錯(cuò)誤信息

String s = "hello world!";
assertThat( s, anyOf( containsString("developer"), containsString("Works") ) );
// 如果出錯(cuò)后,系統(tǒng)會(huì)自動(dòng)拋出以下提示信息:
java.lang.AssertionError:
Expected: (a string containing "developer" or a string containing "Works")
got: "hello world!"

    優(yōu)點(diǎn) 6:開(kāi)發(fā)人員可以通過(guò)實(shí)現(xiàn) Matcher 接口,定制自己想要的匹配符。當(dāng)開(kāi)發(fā)人員發(fā)現(xiàn)自己的某些測(cè)試代碼在不同的測(cè)試中重復(fù)出現(xiàn),經(jīng)常被使用,這時(shí)用戶可以自定義匹配符,將這些代碼綁定在一個(gè)斷言語(yǔ)句中,從而可以達(dá)到減少重復(fù)代碼并且更加易讀的目的。

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