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

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

    開發人員可以使用 assumeThat 并配合 hamcrest 的匹配符 Matcher,對即將被傳入到單元測試用例函數中的 runtime 變量值做精確的假設,如果假設不正確(即當前 runtime 變量的取值不滿足所假設的條件),則不會將該變量傳給該測試用例中假設后面的語句,即程序會從該 assumeThat 所在的 @Test 測試函數中直接自動跳出(test automatically quietly passes,values that violate assumptions are quietly ignored),去執行下一個 @Test 函數,使得本來會中斷的測試現在不會中斷。

    使用假設機制必須得注意以下幾點:
由于 JUnit 4.4 引用了 Hamcrest 匹配符庫,所以使用 assumeThat 可以編寫所有的假設語句。但是為了方便使用,JUnit 4.4 除 assumeThat 之外,還提供了 assumeTrue,assumeNotNull 和 assumeNoException 語句。 要使用 assume* 假設語句,必須得 import static org.junit.Assume.*;。 如果引用了第三方 hamcrest 的匹配符庫,必須得 import static org.hamcrest.Matchers.*;,如果引用 JUnit 4.4 自帶的匹配符庫,需要 import static org.hamcrest.CoreMatchers.*;。

    清單 8 假設機制使用舉例

例1:
@Test
public void filenameIncludesString() {
    //如果文件分隔符不是’/’(forward slash),則不執行assertThat斷言測試,直接跳過該測試用例函數
    assumeThat(File.separatorChar, is('/'));
    //判斷文件名fileName是否含有字符串"developerWorks"
    assertThat( fileName, containsString( "developerWorks" ) );
}

例2:
@Test
public void filenameIncludesString() {
    //bugFixed不是JUnit4.4的函數,是開發人員自己工程中定義的函數,表示判斷指定的defect是否
    //被修正了,如果被修正,則返回true,否則返回false。這里假設缺陷13356被修正后才進行余下單元測試
    assumeTrue( bugFixed("13356") );
    //判斷文件名fileName是否含有字符串"developerWorks"
    assertThat( fileName, containsString( "developerWorks" ) );
}

    理論機制(Theory)

    為什么要引用理論機制(Theory)

    當今軟件開發中,測試驅動開發(TDD — Test-driven development)越發流行。為什么 TDD 會如此流行呢?因為它確實擁有很多優點,它允許開發人員通過簡單的例子來指定和表明他們代碼的行為意圖。

    TDD 的優點:

    使得開發人員對即將編寫的軟件任務具有更清晰的認識,使得他們在思考如何編寫代碼之前先仔細思考如何設計軟件。 對測試開發人員所實現的代碼提供了快速和自動化的支持。 提供了一系列可以重用的回歸測試用例(regression test case),這些測試用例可以用來檢測未來添加的新代碼是否改變了以前系統定義的行為(測試代碼兼容性)。

    然而,TDD 也同樣具有一定的局限性。對于開發人員來說,只用一些具體有限的簡單例子來表達程序的行為往往遠遠不夠。有很多代碼行為可以很容易而且精確的用語言來描述,卻很難用一些簡單的例子來表達清楚,因為他們需要大量的甚至無限的具體例子才可以達到被描述清楚的目的,而且有時有限的例子根本不能覆蓋所有的代碼行為。

    以下列出的代碼行為反映了 TDD 的局限性:

    將十進制整數轉換成羅馬數字,然后再將其轉換回十進制數,并保持原有的數值。(需要大量的測試用例,有限的測試數據可能測不出所實現的代碼的錯誤)。 對一個對象進行操作,希望結果仍然等于原來的對象。(需要考慮各種各樣類型的對象) 在任何一個貨幣的 collection 中添加一個對象 dollar,需要產生出另外一個新的與以前不同的 collection 。(需要考慮所有的 collection 類型的對象)。

    理論(Theory)的出現是為了解決 TDD 這個問題。 TDD 為組織規劃開發流程提供了一個方法,先用一些具體的例子(測試用例 test case)來描述系統代碼的行為,然后再將這些行為用代碼語句進行概括性的總的陳述(代碼實現 implementation)。而 Theory 是對傳統的 TDD 進行一個延伸和擴展,它使得開發人員從開始的定義測試用例的階段可以通過參數集(理論上是無限個參數)對代碼行為進行概括性的總的陳述,我們叫這些陳述為理論。理論是對那些需要無窮個測試用例才能正確描述的代碼行為的概括性陳述。結合理論(Theory)和測試一起,可以輕松的描述代碼的行為并發現 BUG .開發人員都知道他們代碼所想要實現的概括性的總的目的,理論使得他們只需要在一個地方可以快速的指定這些目的,而不要將這些目的翻譯成大量的獨立的測試用例。

上一頁1234567下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 亚洲线精品久久一区二区三区 | 99在线热播精品免费 | 黄色毛片视频免费 | 外国毛片大全免费看 | 欧美人与日本人xx在线视频 | 不卡一区在线观看 | 精品午夜一区二区三区在线观看 | 亚洲va欧美va | 黄站在线 | 涩涩涩导航| bbbb毛片免费看 | 国产成人在线视频网站 | 在线国产二区 | www.日韩在线观看 | 日韩免费影院 | 最近免费视频中文 | 老司机精品99在线播放 | 欧美成国产精品 | 手机在线一区二区三区 | 成人中文在线 | 欧美老妇与禽交 | 日韩三级小视频 | 五月天婷婷网站 | 久久精品亚洲综合一品 | 黄色免费网站观看 | 欧美午夜网站 | 男女视频免费 | 久久国产精品-国产精品 | 黄色高清在线观看 | 免费高清a级毛片在线播放 免费高清欧美一区二区视频 | 欧美成人黄色网 | 日韩在线欧美 | 亚洲天堂成人在线观看 | 亚洲欧美精品中文字幕 | 另类欧美日韩 | 在线观看中文字幕第一页 | 精品视频在线v | 在线播放成人毛片免费视 | 久久99精品麻豆国产 | 久久香蕉国产线看观看亚洲片 | 五月婷婷中文字幕 |