在專案中使用 Kiwi 來做單元測試(Unit Testing) PART 1

單元測試
本來我的專案都是用 OCUint 來做單元測試的,但是目前我服務的 team 是用 Kiwi 來做單元測試,於是我就摸了一下,也就有今天這篇了,若是你對 Kiwi 如何做單元測試也可以參考這篇的做法。

說穿了,單元測試的做法和原則大致上都是差不多了,所以在這篇我就不多描述為何我們要做單元測試,你可以往回翻一下我之前寫過關於單元測試(Unit Testing)的文章,裡面或多或少都有解釋,這篇我就專注在使用 Kiwi 當作單元測試時的語法與該注意的事情。

首先當然要知道 Kiwi 要從哪邊下載,因為畢竟他跟 OCUint 不一樣,不是內建在基本的 Framework 中,所以你必須要特別做一些安裝與設定動作。

開啓專案
首先請掀開一個新專案,由於要做單元測試需要建立 Unit test target ,最簡單的方法就是在建立專案時將 include Unit Tests 的選項給勾選起來,這樣 Xcode 就會自動幫你設好所有的項目,所以若是你本身對怎麼設 Unit Test 的設定不是很熟悉,你可以考慮善用這個選項。

編輯cocoapod設定
接下來找到你的 .xcodeproj 的同一層目錄下面,用文字編輯器 (例如:vi, nano, vim…) 去建立一個名為 podfile 的文字檔。

podfile內容
在 podfile 中鍵入 Kiwi 的設定內容,記得 target 的部分要跟 Xcode 中所設定的一樣,並將 pod 設為 Kiwi ,這樣到時候 cocoaPods 在安裝套件時才會知道要安裝的 Framework 為何。

安裝Kiwi
寫完 podfile 後就可以退出回 Terminal ,並執行 po install 來透過 cocoaPods 來安裝 Framework ,稍等一下後就可以看到如上圖的畫面,那麼恭喜你, Kiwi Framework 就已經安裝完畢了,接下來回到 Xcode 中就可以開始寫 Test code 了。

確認設定檔
打開專案你可以看到 .xconfig 的設定已經幫你做好了,所以你就不用太傷腦筋要做一堆的處理。

加入 SenTestingKit.framework
理論上 cocoaPods 應該會幫你把 SenTestingKit.framework 自動加入專案,若是你遇到沒有幫你加入狀況,你可以到 Build Phases > Link Binary With Libraries 中按 + 手動的把它給加進來。

新增測試檔
設置好後就可以開始寫測試檔了,首先從在專案上按滑鼠右鍵點開 New File 來加入一個新的檔案。

建立 test case class
從 Template 中選取 Objective-C test case class 來間裡一個測試用的類別。

將測試命名為 SimpleSpec
在這個例子中我簡單的把名稱命名為 SimpleSpec,你可以選擇你自己想要的名稱沒有關係。

 

建立新的 Test
命名完後就可以儲存檔案了,要小心儲存時在 Targets 中要勾選到 KiwiDemoTest 的 Target ,若是選錯的話測試就不會正確的 Run 起來,所以這部分務必小心。

刪除多餘的 .h
Kiwi 的測試檔是不需要 .h 檔的,所以請麻煩在專案中直接對他進行刪除。

撰寫測試
刪除後就可以改寫 SimpleSpec.m 檔,這邊我做了一個數字相加的測試,測試 1 + 2 = 5 對不對,很明顯這個結果是一定有錯的,並且我在第一個參數給了 @”It’s so wrong.” 來當作錯誤顯示的訊息,你可以寫你想要的訊息。

跑測試
寫完測試當然要測試一下,跟 OCUint 的方法一樣,要測試 Wiki 的話也是用 Product > Test 來進行測試。

測試 Failure
若是你的測試有問題,也就是俗稱的 No Pass,那麼你就可以看到有錯誤訊息跳出來,並告訴你 MatAdd 測試出錯,並告訴你 It’s so wrong. :p

測試 Pass
趕快回去修正一下,測試一下是否 1 + 2 = 3 是否正確,當你改完再次測試就會發現左側出現  No Issues ,很明顯就是代表這份測試已經 Pass 了。

好了,這就是 Wiki 測試的簡單教學,相信你應該可以很快學會如何用 Wiki 來做單元測試,下此有機會我在繼續寫 PART 2 ,來說明一些比較複雜一點的測試要怎麼寫。

 

本篇發表於 Objective C 與標籤於 anistar固定網址書籤。
本文引用:
文章內容為ANISTAR BLOG所有,引用分享請以鏈結形式註明出處與原始作者。

關於 anistar

現任:台灣區 Yahoo! 專長: Objective C、iOS SDK、Android SDK、Flex 4、RIA、ActrionScript 3、HTML5、CSS3、JQuery、JQuery Mobile、C++、PHP、MySQL...等整合運用。 著作:《Run!PC雜誌》專欄作家、《CADesigner雜誌》專欄作家、《Flash CS3 Professional ActionScript 3.0 打造互動設計力與美》、《新一代互動體驗Flex+AIR程式開發》。 認證:Macromedia Certified Instructor in ColdFusion    Adobe Certified Expert in Photoshop    Adobe Certified Instructor in Flex

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *