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