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

探索JUnit 4.4 新特性[2]

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

  優點 assertThat 不再像 assertEquals 那樣使用比較難懂的謂賓主語法模式(如assertEquals( x)相反assertThat 使用了類似於主謂賓的易讀語法模式(如assertThat(xis())使得代碼更加直觀易讀

  優點 可以將這些 Matcher 匹配符聯合起來靈活使用達到更多目的如清單 所示

  清單 Matcher 匹配符聯合使用

// 聯合匹配符not和equalTo表示不等於
assertThat( something not( equalTo( developer ) ) );
// 聯合匹配符not和containsString表示不包含子字符串
assertThat( something not( containsString( Works ) ) );
// 聯合匹配符anyOf和containsString表示包含任何一個子字符串
assertThat(something anyOf(containsString(developer) containsString(Works)));

  優點 錯誤信息更加易懂可讀且具有描述性(descriptive)

  JUnit 以前的版本默認出錯後不會拋出額外提示信息

assertTrue( sindexOf(developer) > || sindexOf(Works) > );

  如果該斷言出錯只會拋出無用的錯誤信息junitframeworkAssertionFailedErrornull

  如果想在出錯時想打印出一些有用的提示信息必須得程序員另外手動寫

assertTrue( Expected a string containing developer or Works
    sindexOf(developer) > || sindexOf(Works) > );

  非常的不方便而且需要額外代碼

  JUnit 會默認自動提供一些可讀的描述信息如清單 所示

  清單 JUnit 默認提供一些可讀的描述性錯誤信息

String s = hello world!;
assertThat( s anyOf( containsString(developer) containsString(Works) ) );
// 如果出錯後系統會自動拋出以下提示信息
javalangAssertionError:
Expected: (a string containing developer or a string containing Works)
got: hello world!

  優點 開發人員可以通過實現 Matcher 接口定制自己想要的匹配符當開發人員發現自己的某些測試代碼在不同的測試中重復出現經常被使用這時用戶就可以自定義匹配符將這些代碼綁定在一個斷言語句中從而可以達到減少重復代碼並且更加易讀的目的

  如何使用 assertThat

  JUnit 自帶了一些 Hamcrest 的匹配符 Matcher但是只有有限的幾個在類 orghamcrestCoreMatchers 中定義要想使用他們必須導入包 orghamcrestCoreMatchers*

  如果想使用一些其他更多的匹配符 Matcher可以從 Hamcrest 網頁下載 hamcrestlibraryjar 和 hamcrestcorejar並將其加入到工程庫中所有的匹配符都在類 orghamcrestMatchers 中定義要想使用必須得在代碼中 import static orghamcrestMatchers*如果使用外部的匹配符最好就不要再使用 JUnit 自帶的匹配符了因為這樣容易導致匹配符 Matcher 重復定義編譯可能會出錯(ambiguous for the type) JUnit 允許使用 Hamcrest 來使用更多的匹配符這還是 JUnit 第一次允許在自己的工程中使用第三方類

  注意

  assertThat 仍然是斷言語句所以要想使用必須還得 import static orgjunitAssert*

  雖然 assertThat 可以代替以前所有的斷言語句但是以前的所有 assert 語句仍然可以繼續使用清單 列舉了大部分 assertThat 的使用例子

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


From:http://tw.wingwit.com/Article/program/Java/ky/201311/29098.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.