iOS 測試驅動開發

來源:互聯網
上載者:User

測試驅動開發是敏捷開發的一部分,它一般有“red-green- refactor”步驟

iOS測試驅動開發的工具

一、 OCUnit 是Xcode內建的測試載入器

其使用步驟分為

1 建立測試的Target

對於測試的Target可分為兩種:logic test 和application test ,其中邏輯測試可獨立執行,應用測試需要啟動App。

對於應用測試需要Builder Setting配置好Bundle Loader 和Test Host的值,以便改Target可以用到。

Set
the value of the Bundle Loader build setting to:

  • iOS: $(BUILT_PRODUCTS_DIR)/<app_name>.app/<app_name>

  • Set the value of the Test Host build setting to:

    $(BUNDLE_LOADER)

    細節可參考Unit Testing in iOS

2 編寫unit test case

OCUnit的test case都繼承自抽象類別SenTestCase,所以在編寫自己的測試類別時,

1 從SenTestCase繼承

2 在setUp方法中完成完成測試環境的建立,一般時建立初始化被測試類別的執行個體(在每個test函數執行錢,會被調用)

若要對於同一測試類別中不同的測試函數,需要setUp不同的環境,可以考慮使用setUpTestWithSelector:(SEL)testMethod;

3 編寫自己的測試函數如:testMyExample(需以test為首碼),使用斷言來聲明期望的測試結果

常用的斷言有

STAssertNil 斷言對象為空白

STAssertNotNil斷言對象為為空白

STAssertTrue 斷言運算式為真

STAssertFalse斷言運算式為假

STAssertEquals 斷言兩個變數值相等

STAssertEqualObjects斷言兩個對象相等

STAssertThrows 斷言拋出異常

STAssertNoThrow 斷言味拋出異常

更多斷言可參看SenTestingKit/SenTestingUtilities.h檔案

4 在tearDown完成測試環境的恢複(每個test函數執行完後,會被調用)

3 運行單元測試

       command+U

具體的細節可參考官方文檔

二、GHUnit 

測試架構,可視化測試結果顯示

GHUnit
GHUnit配置地址

三、 測試驅動開發最重要的是,編寫高品質的單元測試用例,按照MVC設計模式編寫的代碼,是有結構的,這個也可以應用到write unit test,對於Model層的test case,其一般結構如下

@class Topic;@interface TopicTests : SenTestCase {    Topic *topic;}@end

在TopicTests類中,建立初始化topic,並通過happy result和邊界數值,來測試Topic類的行為

對於Controller層,一般較Model層複雜,會涉及到多個對象,要做的第一步便是孤立耦合,

對於非同步網路類的測試,要藉助不發送網路請求的Mock對象,

對於View層,單元測試覆蓋較少,

四、測試覆蓋率

對於Xcode4.0以上的同學,輸出coverage 結果的設定如下:

在對應的Target下,進入Build Setting介面

設定Generate Test Coverage Files:YES

Instrument Program Flow :YES

這是進入/Users/<username>/Library/Developer/Xcode/DerivedData/<app_name-<Serial>>/Build/Intermediates/<app_name>.build/Debug-iphonesimulator/<target_name>.build/Objects-normal/i386

會發下該檔案夾下有.gcda和.gcno檔案,這時候便是Xcode的LLVM輸出了測試結果,下載一個CoverStory ,開啟相應的檔案變可看到

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.