亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

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

    假設機制(Assumption)

    理想情況下,寫測試用例的開發(fā)人員可以明確的知道所有導致他們所寫的測試用例不通過的地方,但是有的時候,這些導致測試用例不通過的地方并不是很容易的被發(fā)現(xiàn),可能隱藏得很深,從而導致開發(fā)人員在寫測試用例時很難預測到這些因素,而且往往這些因素并不是開發(fā)人員當初設計測試用例時真正目的,他們的測試點是希望測試出被測代碼中別的出錯地方。

    比如,一個測試用例運行的 locale(如:Locale.US)與之前開發(fā)人員設計該測試用例時所設想的不同(如:Locale.UK),這樣會導致測試不通過,但是這可能并不是開發(fā)人員之前設計測試用例時所設想的測試出來的有用的失敗結(jié)果(測試點并不是此,比如測試的真正目的是想判斷函數(shù)的返回值是否為 true,返回 false 則測試失敗),這時開發(fā)人員可以通過編寫一些額外的代碼來消除這些影響(比如將 locale 作為參數(shù)傳入到測試用例中,每次運行測試用例時,明確指定 locale),但是花費時間和精力來編寫這些不是測試用例根本目的的額外代碼其實是種浪費,這時可以使用 Assumption 假設機制來輕松達到額外代碼的目的。編寫該測試用例時,首先假設 locale 必須是 Locale.UK,如果運行時 locale 是 Locale.UK,則繼續(xù)執(zhí)行該測試用例函數(shù),如果是其它的 locale,則跳過該測試用例函數(shù),執(zhí)行該測試用例函數(shù)以外的代碼,這樣不會因為 locale 的問題導致測試出錯。

    JUnit 4.4 結(jié)合 Hamcrest 庫提供了 assumeThat 語句,開發(fā)人員可以使用其配合匹配符 Matcher 設計所有的假設條件(語法和 assertThat 一樣)。同樣為了方便使用,JUnit 4.4 還專門提供了 assumeTrue,assumeNotNull 和 assumeNoException 語句。

    假設機制(Assumption)的優(yōu)點

    優(yōu)點 1:通過對 runtime 變量進行取值假設,從而不會因為一個測試用例的不通過而導致整個測試失敗而中斷(the test passes),使得測試更加連貫。

    開發(fā)人員編寫單元測試時,經(jīng)常會在一個測試中包含若干個測試用例函數(shù),這時若是遇到某個測試用例函數(shù)不通過,整個單元測試會終止。這將導致測試不連貫,因為開發(fā)人員往往希望一次能運行多個測試用例函數(shù),不通過的測試用例函數(shù)不要影響到剩下的測試用例函數(shù)的運行,否則會給 debug 調(diào)試帶來很大的難度。

    開發(fā)人員編寫單元測試時,有時是預測不了傳入到單元測試方法中的變量值的,而且這些值有時并不是開發(fā)人員所期望的,因為他們會導致測試用例不通過并中斷整個測試,所以開發(fā)人員需要跳過這些導致測試用例函數(shù)不通過的異常情況。

    清單 6 假設機制優(yōu)點 1 舉例

//@Test 注釋表明接下來的函數(shù)是 JUnit4 及其以后版本的測試用例函數(shù)
@Test
public void testAssumptions() {
    //假設進入testAssumptions時,變量i的值為10,如果該假設不滿足,程序不會執(zhí)行assumeThat后面的語句
    assumeThat( i, is(10) );
    //如果之前的假設成立,會打印"assumption is true!"到控制臺,否則直接調(diào)出,執(zhí)行下一個測試用例函數(shù)
    System.out.println( "assumption is true!" );
}

    優(yōu)點 2:利用假設可以控制某個測試用例的運行時間,讓其在自己期望的時候運行(run at a given time)。

    清單 7 假設機制優(yōu)點 2 舉例

@Test
//測試用例函數(shù)veryLongTest()執(zhí)行需要很長時間,所以開發(fā)人員不是每次都想運行它,可以通過判斷是否定義了
//”DEV”環(huán)境變量來選擇性地執(zhí)行該測試用例
public void veryLongTest() throws Exception {
    //假設環(huán)境變量”DEV”為空,即如果之前通過System.setProperty定義過”DEV”環(huán)境變量(不為空),則自動跳過
    //veryLongTest中假設后剩下的語句,去執(zhí)行下一個JUnit測試用例,否則執(zhí)行假設后接下來的語句
    assumeThat( System.getProperty( "DEV" ), nullValue() );

    System.out.println("running a long test");
    Thread.sleep( 90 * 1000 );
}

上一頁1234567下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 免费观看性欧美特黄 | 亚洲国产精品视频 | 制服丝袜在线看 | 国产99在线播放免费 | 国产成+人+综合+亚洲 欧美 | 欧美日韩一区二区三区视频播 | 成人免费xxxxx在线视频 | 中文字幕乱视频 | 一级片视频免费观看 | 日本资源站 | 国产视频中文字幕 | 日日噜噜夜夜躁躁狠狠 | 国产一卡2卡3卡四卡网站 | 国产一二三区精品 | 色你懂的 | 婷婷成人丁香五月综合激情 | 波多野结衣与公中出中文字幕 | 国产精品青草久久 | 中文字幕第98页小明免费 | 久久久亚洲欧洲日产国码二区 | 中文字幕有码视频 | 欧美日韩国产免费一区二区三区 | 国外免费一级 | 日韩午夜在线视频不卡片 | 国产丶欧美丶日韩丶不卡影视 | 欧美在线一二三 | 国产三级a三级三级 | 日本欧美视频在线 | 日本婷婷 | 亚洲日本va中文字幕线 | 欧美日韩在线精品一区二区三区 | 人人爽人人爽人人爽 | 狠狠2018| 日韩欧美亚洲中字幕在线播放 | 波多野结衣中文字幕2022免费 | 老司机毛片 | 久久www免费人成看片色多多 | 国产精品欧美在线 | 亚洲欧美日韩精品久久亚洲区色播 | 黄视频免费网站 | 国产色视频网站免费观看 |