qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          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,如下圖:


           3、搜索Test Host,設(shè)置其值為$(BUNDLE_LOADER)效果如圖

            4、使新建的單元測(cè)試target依賴與編譯應(yīng)用的target,效果如圖

            5、如果是在新建的時(shí)候系統(tǒng)默認(rèn)新建了scheme,則可以通過新的scheme來進(jìn)行application tests,如果沒有默認(rèn)新建scheme,則可以編輯用來編譯工程的scheme,選擇左側(cè)的Test如圖:

            點(diǎn)擊底部的“+”,將單元測(cè)試的target添加進(jìn)來。如圖

            這樣原來的logic unit tests就配置成application unit tests了。可以按運(yùn)行l(wèi)ogic unit tests的方法運(yùn)行application unit tests,來驗(yàn)證是否配置正確。

            選擇Product ->Test(或者Command+U)

            可以對(duì)比Logic UnitTest 運(yùn)行完的report和 Application UnitTest運(yùn)行的report有不一樣的地方,就是上圖方框這一欄 Application UnitTest

            有 “Run test suit all tests” 這一欄。

          posted on 2013-07-09 10:21 順其自然EVO 閱讀(289) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2013年7月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 都匀市| 长宁县| 万安县| 安溪县| 鄯善县| 元江| 札达县| 嘉祥县| 常熟市| 波密县| 新民市| 龙陵县| 神农架林区| 同德县| 台州市| 张掖市| 吉木萨尔县| 无为县| 万州区| 安西县| 蒙自县| 晋宁县| 浦城县| 呼伦贝尔市| 贵阳市| 保靖县| 全南县| 肥城市| 育儿| 秦安县| 寻乌县| 牙克石市| 定兴县| 尼木县| 镇安县| 盖州市| 南雄市| 巧家县| 乌恰县| 灯塔市| 盱眙县|