Xcode單元測試環境配置
單元測試(unit testing),是指對軟件中的最小可測試單元進行檢查和驗證。對于單元測試中單元的含義,一般來說,要根據實際情況去判定其具體含義,如C語言中單元指一個函數,Java里單元指一個類,圖形化的軟件中可以指一個窗口或一個菜單等。總的來說,單元就是人為規定的最小的被測功能模塊。單元測試是在軟件開發過程中要進行的最低級別的測試活動,軟件的獨立單元將在與程序的其他部分相隔離的情況下進行測試。
二. Xcode中的UnitTest
Xcode中集成了單元測試框架OCUnit,可以完成不同側重點的測試。Xcode下的單元測試分為logic uint tests和application unit tests,兩種類型的單元測試都需要對應一個自己的Target。
logic uint tests在編譯階段進行,并且只能在模擬器中進行,并且需要配置一個單獨的schemes來運行。主要是針對數據層的各個模塊進行測試,如果數據層的模塊劃分比較理想解耦相對徹底,則可以通過邏輯單元測試對各模塊給出各種輸入,然后對各數據模塊的輸出進行判斷,來判斷各數據模塊是否正常。
application unit tests在程序運行階段進行,可以在模擬器和真機上進行,可以在應用的schemes或者單獨配置的schemes里面運行。主要是針對應用中的相對比較重要的類以及部分簡單的界面操作進行測試,完成邏輯單元測試以外的檢測。
xcode可以通過2種方式創建UnitTest,一種是創建工程時自帶UnitTest,一種時在已有工程添加UnitTest。
三. Xcode創建帶UnitTest的工程(Xcode 4.6.2)
如果在新建工程的時候選中
并且新建的工程是一個應用,那么系統會默認生成application unit tests;新建其它類型的工程選中Include Unit Tests的話,系統默認生成logic uint tests。系統自動生成的測試單元時會自動生成對應的target,并且一個target只能對應一中類型的單元測試,但可以包含多個測試文件,針對工程中不同的類進行測試。
四. Xcode向已有工程添加UnitTest(Xcode 4.6.2)
如果在新建工程的時候沒有選擇Include Unit Tests的話,則可以手動去添加單元測試。
下面首先介紹下向工程添加單元測試的target:
1、選則File->New->New Target,在左側欄中選中iOS->other,右邊選擇Cocoa Touch Unit Tests Bundle,如圖
Next后位target完成命名
這樣就完成了向工程中添加單元測試用的target。效果如下
其實按如上步驟添加單元測試target的話,生成的就是一個logic uint tests。
一般情況下Xcode在你添加新的target的時候會自動的添加一個schemes,該schemes的命名與你添加的target一樣。
如果你不想在新建target的時候新建scheme(因為application unit tests可以在真機和模擬器上運行,并且時在程序運行時進行測試,所以完全可以和應用本身的target共用一個scheme,這樣進行應用單元測試的時候就不用切換scheme。)可以選擇上圖的Manage Schemes,去掉Autocreate schemes,如下圖: