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

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

    文通過理論分析和詳細例子向讀者闡述 JUnit 4.4 所帶來的新特性,讀者通過本文的學習,可以輕松掌握使用 JUnit 4.4 的新特性。

    隨著當前 Java 開發的越發成熟,Agile 和 TDD 的越發流行,自動化測試的呼聲也越來越高。若想將單元測試變得自動化,自然 JUnit 這把利器必不可少,這也是 JUnit 自 1997 年誕生以來在 Java 開發業界一直相當流行的原因。

    JUnit 是針對 Java 語言的一個單元測試框架,它被認為是迄今為止所開發的重要的第三方 Java 庫。 JUnit 的優點是整個測試過程無需人的參與,無需分析和判斷終測試結果是否正確,而且可以很容易地一次性運行多個測試。 JUnit 的出現促進了測試的盛行,它使得 Java 代碼更健壯,更可靠,Bug 比以前更少。

    JUnit 自從問世以來一直在不停的推出新版本,目前新的版本是 2007 年 7 月發布的 JUnit 4.4,它是繼 JUnit4 以來大的發行版,提供了很多有用的新特性。本文將假設讀者已經具有 JUnit 4 的使用經驗。

    JUnit 4.4 概述

    JUnit 設計的目的是有效地抓住編程人員寫代碼的意圖,然后快速檢查他們的代碼是否與他們的意圖相匹配。 JUnit 發展至今,版本不停的翻新,但是所有版本都一致致力于解決一個問題,那是如何發現編程人員的代碼意圖,并且如何使得編程人員更加容易地表達他們的代碼意圖。JUnit 4.4 也是為了如何能夠更好的達到這個目的而出現的。

    JUnit 4.4 主要提供了以下三個大方面的新特性來更好的抓住編程人員的代碼意圖:

    提供了新的斷言語法(Assertion syntax)——assertThat

    提供了假設機制(Assumption)

    提供了理論機制(Theory)

    新的斷言語法(Assertion syntax)—— assertThat

    JUnit 4.4 學習 JMock,引入了 Hamcrest 匹配機制,使得程序員在編寫單元測試的 assert 語句時,可以具有更強的可讀性,而且也更加靈活。

    Hamcrest 是一個測試的框架,它提供了一套通用的匹配符 Matcher,靈活使用這些匹配符定義的規則,程序員可以更加精確的表達自己的測試思想,指定所想設定的測試條件。比如,有時候定義的測試數據范圍太精確,往往是若干個固定的確定值,這時會導致測試非常脆弱,因為接下來的測試數據只要稍稍有變化,可能導致測試失敗(比如 assertEquals( x, 10 ); 只能判斷 x 是否等于 10,如果 x 不等于 10,測試失敗);有時候指定的測試數據范圍又不夠太精確,這時有可能會造成某些本該會導致測試不通過的數據,仍然會通過接下來的測試,這樣會降低測試的價值。 Hamcrest 的出現,給程序員編寫測試用例提供了一套規則和方法,使用其可以更加精確的表達程序員所期望的測試的行為。(具體 Hamcrest 的使用,請參閱 參考資料)

    JUnit 4.4 結合 Hamcrest 提供了一個全新的斷言語法——assertThat.程序員可以只使用 assertThat 一個斷言語句,結合 Hamcrest 提供的匹配符,可以表達全部的測試思想。

    assertThat 的基本語法如下:

    清單 1 assertThat 基本語法

assertThat( [value], [matcher statement] );

    value 是接下來想要測試的變量值; matcher statement 是使用 Hamcrest 匹配符來表達的對前面變量所期望的值的聲明,如果 value 值與 matcher statement 所表達的期望值相符,則測試成功,否則測試失敗。

    assertThat 的優點

    優點 1:以前 JUnit 提供了很多的 assertion 語句,如:assertEquals,assertNotSame,assertFalse,assertTrue,assertNotNull,assertNull 等,現在有了 JUnit 4.4,一條 assertThat 即可以替代所有的 assertion 語句,這樣可以在所有的單元測試中只使用一個斷言方法,使得編寫測試用例變得簡單,代碼風格變得統一,測試代碼也更容易維護。

    優點 2:assertThat 使用了 Hamcrest 的 Matcher 匹配符,用戶可以使用匹配符規定的匹配準則精確的指定一些想設定滿足的條件,具有很強的易讀性,而且使用起來更加靈活。如清單 2 所示:

    清單2使用匹配符 Matcher 和不使用之間的比較

// 想判斷某個字符串 s 是否含有子字符串 "developer" 或 "Works" 中間的一個
// JUnit 4.4 以前的版本:assertTrue(s.indexOf("developer")>-1||s.indexOf("Works")>-1 );
// JUnit 4.4:
assertThat(s, anyOf(containsString("developer"), containsString("Works")));
// 匹配符 anyOf 表示任何一個條件滿足則成立,類似于邏輯或 "||", 匹配符 containsString 表示是否含有參數子
// 字符串,文章接下來會對匹配符進行具體介紹

    優點 3:assertThat 不再像 assertEquals 那樣,使用比較難懂的“謂賓主”語法模式(如:assertEquals(3, x);),相反,assertThat 使用了類似于“主謂賓”的易讀語法模式(如:assertThat(x,is(3));),使得代碼更加直觀、易讀。

上一頁1234567下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 女女同性一区二区三区四区 | 欧美第九页 | 成人18免费视频 | 日韩黄色毛片 | 精品国产综合成人亚洲区 | 中文字幕一区二区三区精彩视频 | 亚洲欧洲日产国码久在线观看 | 国产成人精品视频2021 | 中文字幕一区二区三区精彩视频 | 男女后进式猛烈xx00动态图片 | 免费看黄的动漫永久免费 | 国产高清精品入口麻豆 | 欧美末成年videos丨 | 日日夜人人澡人人澡人人看免 | 天天干夜夜叭 | 香蕉网站在线观看 | 中文字幕在线观看免费 | 亚洲国产一区在线 | 在线中文字幕亚洲 | 欧美一级www | 网站免黄 | 一二三四在线视频社区8 | 日韩不卡一区二区三区 | 成人α片 | 日韩mm| 在线看黄的网站 | 午夜免费伦费影视在线观看 | 免费一级毛片在播放视频 | 免费看欧美一级片 | 精品午夜寂寞黄网站在线 | 日韩欧美亚洲综合久久影院d3 | 日本a中文字幕 | 欧美video巨大粗暴多人 | 色在线免费观看 | 欧美成a人免费观看 | 成年人免费在线视频 | 日韩成人在线网站 | 免费毛片看 | 成人综合国产乱在线 | 精品一区二区三区的国产在线观看 | 特级一级毛片视频免费观看 |