熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

探索JUnit 4.4 新特性[5]

2022-06-13   來源: Java開源技術 

  清單 假設機制優點 舉例

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

    Systemoutprintln(running a long test);
    Threadsleep( * );
}

   如何使用 Assumption 假設機制

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

  使用假設機制必須得注意以下幾點

  由於 JUnit 引用了 Hamcrest 匹配符庫所以使用 assumeThat 就可以編寫所有的假設語句但是為了方便使用JUnit 除 assumeThat 之外還提供了 assumeTrueassumeNotNull 和 assumeNoException 語句 要使用 assume* 假設語句必須得 import static orgjunitAssume*; 如果引用了第三方 hamcrest 的匹配符庫必須得 import static orghamcrestMatchers*;如果引用 JUnit 自帶的匹配符庫需要 import static orghamcrestCoreMatchers*;

  清單 假設機制使用舉例

  例

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

  例

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

  理論機制(Theory)

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

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

[]  []  []  []  []  []  []  []  


From:http://tw.wingwit.com/Article/program/Java/ky/201311/29101.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.