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

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

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

    優(yōu)點 2:理論仍然可以重用以前的測試用例,因為以前的許多傳統(tǒng)的具體的測試用例仍然可以被輕松的改寫成理論(Theory)測試實例。

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

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

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

    清單 9 英鎊 Pound 乘法的一個測試用例

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

    這時很自然的會想到一個測試用例可能不夠,需要再多一個,如清單 10 所示:

    清單 10 英鎊 Pound 乘法的兩個測試用例

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

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

    很自然的,您會想到用清單 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 是一個理論的簡單例子,理論是一個帶有參數(shù)的方法,其行為是對任何參數(shù)都是正常的返回,不會拋出斷言錯誤和其它異常。理論是對一組數(shù)據(jù)進(jìn)行概括性的陳述,像一個科學(xué)理論一樣,如果沒有對所有可能出現(xiàn)的情況都進(jìn)行實驗,是不能證明該理論是正確的,但是只要有一種錯誤情況出現(xiàn),該理論不成立。相反地,一個測試是對一個單獨數(shù)據(jù)的單獨陳述,像是一個科學(xué)理論的實驗一樣。

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