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

    理論機(jī)制的優(yōu)點(diǎn)

    優(yōu)點(diǎn) 1:理論(Theory)使得開發(fā)完全抽象的接口(Interface)更加容易。

    優(yōu)點(diǎn) 2:理論仍然可以重用以前的測試用例,因?yàn)橐郧暗脑S多傳統(tǒng)的具體的測試用例仍然可以被輕松的改寫成理論(Theory)測試實(shí)例。

    優(yōu)點(diǎn) 3:理論(Theory)可以測試出一些原本測試用例沒測出來的 bugs .優(yōu)點(diǎn) 4:理論允許配合自動(dòng)化測試工具進(jìn)行使用,自動(dòng)化工具通過大量的數(shù)據(jù)點(diǎn)來測試一個(gè)理論,從而可以放大增強(qiáng)理論的效果。利用自動(dòng)化工具來分析代碼,找出可以證明理論錯(cuò)誤的值。

    下面通過一個(gè)簡單的例子來逐步介紹理論的優(yōu)點(diǎn)。

    比如設(shè)計(jì)一個(gè)專門用來貨幣計(jì)算的計(jì)算器,首先需要給代碼行為編寫測試用例(這里以英鎊 Pound 的乘法為例),如清單 9 所示:

    清單 9 英鎊 Pound 乘法的一個(gè)測試用例

@Test
public void multiplyPoundsByInteger() {
    assertEquals( 10, new Pound(5).times(2).getAmount() );
}

    這時(shí)很自然的會(huì)想到一個(gè)測試用例可能不夠,需要再多一個(gè),如清單 10 所示:

    清單 10 英鎊 Pound 乘法的兩個(gè)測試用例

@Test
public void multiplyPoundsByInteger () {
    assertEquals( 10, new Pound(5).times(2).getAmount() );
    assertEquals( 15, new Pound(5).times(3).getAmount() );
}

    但是此時(shí)您可能又會(huì)發(fā)現(xiàn)這兩個(gè)測試用例還是很有限,您所希望的是測試所有的整數(shù),而不只是 2,3 和 5,這些只是您所想要的測試的數(shù)據(jù)的子集,兩個(gè)測試用例并不能完全與您所想要測試的代碼的行為相等價(jià),您需要更多的測試用例,此時(shí)會(huì)發(fā)現(xiàn)需要很多的額外工作來編寫這些測試用例,更可怕的是,您會(huì)發(fā)現(xiàn)您需要測試用例的并不只是簡單的幾個(gè),可能是成千上萬個(gè)甚至無窮個(gè)測試用例才能滿足等價(jià)您的代碼行為的目的。

    很自然的,您會(huì)想到用清單 11 所示的代碼來表達(dá)您的測試思想。

    清單 11 使用變量輔助編寫測試用例

//利用變量來代替具體數(shù)據(jù)表達(dá)測試思想
public void multiplyAnyAmountByInteger(int amount, int multiplier) {
    assertEquals( amount * multiplier,
        new Pound( amount ).times( multiplier ).getAmount() );
}

    利用清單 11 的 multiplyAnyAmountByInteger 方法,可以輕松將測試用例改寫成如清單 12 所示:

    清單 12 改寫的英鎊 Pound 乘法的測試用例

@Test
public void multiplyPoundsByInteger () {
    multiplyAnyAmountByInteger(5, 2);
    multiplyAnyAmountByInteger(5, 3);
}

    如清單 12 所示,以后若想增加測試用例,只要不停調(diào)用 multiplyAnyAmountByInteger 方法并賦予參數(shù)值即可。

    方法 multiplyAnyAmountByInteger 是一個(gè)理論的簡單例子,理論是一個(gè)帶有參數(shù)的方法,其行為是對(duì)任何參數(shù)都是正常的返回,不會(huì)拋出斷言錯(cuò)誤和其它異常。理論是對(duì)一組數(shù)據(jù)進(jìn)行概括性的陳述,像一個(gè)科學(xué)理論一樣,如果沒有對(duì)所有可能出現(xiàn)的情況都進(jìn)行實(shí)驗(yàn),是不能證明該理論是正確的,但是只要有一種錯(cuò)誤情況出現(xiàn),該理論不成立。相反地,一個(gè)測試是對(duì)一個(gè)單獨(dú)數(shù)據(jù)的單獨(dú)陳述,像是一個(gè)科學(xué)理論的實(shí)驗(yàn)一樣。

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