Posted on 2009-07-25 21:27
小強摩羯座 閱讀(327)
評論(0) 編輯 收藏
JUnit 設計的目的就是有效地抓住編程人員寫代碼的意圖,然后快速檢查他們的代碼是否與他們的意圖相匹配。 JUnit 發展至今,版本不停的翻新,但是所有版本都一致致力于解決一個問題,那就是如何發現編程人員的代碼意圖,并且如何使得編程人員更加容易地表達他們的代碼意圖。JUnit 4.4 也是為了如何能夠更好的達到這個目的而出現的。
JUnit 4.4 主要提供了以下三個大方面的新特性來更好的抓住編程人員的代碼意圖:
1)提供了新的斷言語法(Assertion syntax)——assertThat 。
*新的斷言語法主要提供了assertThat,其操作示例:
// 聯合匹配符not和equalTo表示“不等于”
assertThat( something, not( equalTo( "developer" ) ) );
// 聯合匹配符not和containsString表示“不包含子字符串”
assertThat( something, not( containsString( "Works" ) ) );
// 聯合匹配符anyOf和containsString表示“包含任何一個子字符串”
assertThat(something, anyOf(containsString("developer"), containsString("Works")));
JUnit 4.4 默認提供一些可讀的描述性錯誤信息
String s = "hello world!";
assertThat( s, anyOf( containsString("developer"), containsString("Works") ) );
// 如果出錯后,系統會自動拋出以下提示信息:
java.lang.AssertionError:
Expected: (a string containing "developer" or a string containing "Works")
got: "hello world!"
2)提供了假設機制(Assumption)。
提供語句assumeThat, assumeTrue,assumeNotNull 和 assumeNoException。
*assumeThat作用:語法同assertThat,語義當假設成立時執行其后語句。
應用:1、改變條件,可對某些測試用例選擇性執行。2、
*使用: assume* 假設語句,必須得 import static org.junit.Assume.*;。 如果引用了第三方 hamcrest 的匹配符庫,必須得 import static org.hamcrest.Matchers.*;,如果引用 JUnit 4.4 自帶的匹配符庫,需要 import static org.hamcrest.CoreMatchers.*;。
3)提供了理論機制(Theory)
Theory機制比較復雜,一般也用不到。