iOS開發中的單元測試(二) 讓斷言活潑起來的匹配引擎

來源:互聯網
上載者:User

上一篇文章簡單介紹了OCUnit和GHUnit兩款iOS開發中較為常見的單元測試架構,本文進一步介紹單元測試 中的另一利器——匹配引擎(Matcher Engine)。匹配引擎可以替代斷言方法,配合單元測試引擎使用,測試 用例可以更多樣化,更細緻。

傳統斷言提供的方法數量和功能都有限,以導讀中提到的兩款架構為例 ,即使是斷言相對豐富的GHUnit也只是提供了38種斷言方法,範圍僅涵蓋了邏輯比較,異常和出錯等少數幾方 面,仍然很單一。而使用匹配引擎代替斷言,可能性就大大豐富了,除了普通斷言支援的規則,一般的引擎還 預設提供了包含,區間,繼承關係等。更重要的是,使用匹配引擎開發人員可以自行開發匹配規則,引入與業務 相關的邏輯判斷。

本文要介紹兩款匹配引擎,一款就是Hamcrest的Objective-C實現——OCHamcrest, 另一款則是專為Objective-C/Cocoa而生的後來者——Expecta。接下來將結合GHUnitTest,介紹兩款匹配引擎 如何在單元測試中發揮作用(有關GHUnitTest參考《iOS開發中的單元測試(一)》。

OCHamcrest

介紹匹配引擎必須要提Hamcrest,幾乎已經成為匹配引擎的代名詞。官網首頁上 的一句話表明了它的身世:“Born in Java, Hamcrest now has implementations in a number of languages.”。這款誕生於Java的匹配引擎現在還支援除Java的Python、Ruby、PHP、Erlang和Objective-C。

加入工程

在iOS工程中使用OCHamcrest需要先擷取OCHamcrestIOS.framework,可以從Quality Coding直接下載,或 在Github上擷取源碼編譯。注意:Github上託管的OCHamcrest工程以Submodule的形式關聯原始碼,因此如果 使用命令列方式clone工程,需要執行“git submodule update --init”。

下載源碼後,進入Source 目錄,執行MakeDistribution.sh指令碼,將會在Source/build/Release下產生OCHamcrest.framework、 OCHamcrestIOS.framework和OCHamcrest.framework.dSYM , OCHamcrestIOS.framework就是iOS工程中需要用 到的架構,如圖1。

圖1,從源碼編譯產生 OCHamcrestIOS.framework

開啟已經安裝了GHUnitTest的工程,把OCHamcrestIOS.framework添加到單 元測試的Target中。在需要使用匹配引擎的用例中,定義“HC_SHORTHAND”並匯入 “<OCHamcrestIOS/OCHamcrestIOS.h>”(如圖2)。

圖2,把 OCHamcrestIOS.framework匯入工程

至此OCHamcrest已經安裝完成,可以再測試案例中使用匹配規則代 替GHUnitTest的斷言方法。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.