使用xcode開發很長一段時間了,可是并沒有使用其中支持的單元測試的功能,所以特別留意了一下使用單元測試的方式。
l iPhone從SDK3.0開始直接支持單元測試,可以創建Unit test bundle形式的target。方便了單元測試代碼的編寫。
l 還有一個是用google-toolbox-for-mac中帶的iPhone Unit Test 框架,其實此框架也是基于OCUnit庫,但是區別是google-toolbox-for-mac添加了一部分自己的代碼從而實現有限的UI測試。
在Xcode中支持兩種形式的單元測試:Logic Tests和Application Tests。
n 其中Logic Tests主要測試程序靜態的函數邏輯功能,在程序的編譯(Build)階段進行,并且只能在模擬器中使用。
n 而Application Tests在程序的運行(Run)階段進行,可以更全面的測試程序運行的一些狀態功能,包括AppDelegate,Xib和viewController等的加載和程序啟動后的一些功能,并且不能在模擬器中使用而只能在真機上使用。
1:測試環境創建
添加測試target到工程
記得添加SenTestingKit.framework到測試的target中,這樣才能支持測試
這是一個從SenTestCase繼承的class,測試代碼在里面實現。
2.編寫測試函數
測試函數的結構為
- (void) test<test_case_name> {
... // Set up, call test-case subject API.
ST... // Report pass/fail to testing framework.
... // Tear down.
}
函數命名以test為前綴,并且返回值為void,不帶參數。
其中Set Up和Tear down可以單獨拿出來寫兩個函數
- (void) setUp {
test_subject = [[MyClass new] retain];
STAssertNotNil(test_subject, @"Could not create test subject.");
}
- (void) tearDown {
[test_subject release];
}
這樣在調用測試函數之前會自動調用setUp 函數,之后會自動調用tearDown 函數。當然,如何寫出好的測試代碼,這個還需要進一步的學習。
準確的說Test Cases不需要運行,編譯的時候就運行了。嘗試 Build Unit Test Target, 你會直接得到一個錯誤,就像編譯錯誤一樣顯示在Xcode里面??梢栽?/span>App的Target加上Unit Test的denpendency, 這樣,每次Build and Go的時候Test Cases都會運行一次,如果有錯,馬上會停下來,顯示錯誤。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。