Xcode中統(tǒng)計(jì)代碼覆蓋率

最近在項(xiàng)目里需要在單元測(cè)試時(shí)統(tǒng)計(jì)一下代碼覆蓋率,其實(shí)就是被用來(lái)作為測(cè)量單元測(cè)試的指標(biāo),看看測(cè)試的代碼覆蓋到多廣的范圍,下面介紹一下如何統(tǒng)計(jì)單元測(cè)試的代碼覆蓋率:

下載工具

主要采用XcodeCoverage工具,它可以將代碼覆蓋的結(jié)果以html的形式展現(xiàn),方便我們查看,可以采用pod的方式安裝:

pod 'XcodeCoverage', '~>1.0'

工程配置

pod安裝后需要配置工程:

  • 設(shè)置 Build Settings
    需要設(shè)置兩個(gè)地方,找到 “Generate Test Coverage Files”和“Instrument Program Flow”兩個(gè)選項(xiàng),分別設(shè)置Debug下為YES:
屏幕快照 2015-06-11 下午5.47.01.png
  • 設(shè)置 Build Phases
    點(diǎn)擊New Run Script Phase,編輯使其運(yùn)行Pods/XcodeCoverage/exportenv.sh腳本:
添加運(yùn)行腳本

RUN

工程配置完后,開(kāi)始跑單元測(cè)試?yán)E芡隃y(cè)試?yán)螅蜷_(kāi)終端,cd進(jìn)入到XcodeCoverage目錄,運(yùn)行如下腳本:

./getcov --show

然后你就可以在瀏覽器中查看你的代碼覆蓋率結(jié)果。

example

下面假設(shè)你要測(cè)試一個(gè)getMaxNumber功能,代碼如下:

@implementation MaxNumber

+(int)getMaxNumber:(int)a b:(int)b c:(int)c
{
    if(a > b){
        if(a > c){
            return a;
        }else{
            return c;
        }
    }else{
        if(b > c){
            return b;
        }else{
            return c;
        }
    }
}

@end

首先添加一個(gè)單元測(cè)試:

-(void)testGetMax
{
    XCTAssertEqual(3, [MaxNumber getMaxNumber:1 b:2 c:3]);
}

運(yùn)行完該測(cè)試?yán)螅\(yùn)行腳本./getcov --show,便可以看到如下結(jié)果:


不完全覆蓋

其中的紅色表示測(cè)試?yán)龥](méi)有覆蓋到的地方。下面增加三個(gè)測(cè)試?yán)?/p>

-(void)testGetMax
{
    XCTAssertEqual(3, [MaxNumber getMaxNumber:1 b:2 c:3]);
    XCTAssertEqual(3, [MaxNumber getMaxNumber:2 b:1 c:3]);
    XCTAssertEqual(3, [MaxNumber getMaxNumber:3 b:2 c:1]);
    XCTAssertEqual(3, [MaxNumber getMaxNumber:1 b:3 c:2]);
}
   

測(cè)試?yán)薷闹螅枰冗\(yùn)行cleancov腳本(如果工程里面的代碼修改了,需要clean product),然后再運(yùn)行腳本./getcov --show查看結(jié)果:


完全覆蓋

可以看出現(xiàn)在的測(cè)試代碼已經(jīng)覆蓋到了該函數(shù)的所有代碼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評(píng)論 19 139
  • 1.測(cè)試與軟件模型 軟件開(kāi)發(fā)生命周期模型指的是軟件開(kāi)發(fā)全過(guò)程、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架。軟件項(xiàng)目的開(kāi)發(fā)包括:需求、設(shè)...
    Mr希靈閱讀 22,010評(píng)論 7 278
  • 1.測(cè)試與軟件模型 軟件開(kāi)發(fā)生命周期模型指的是軟件開(kāi)發(fā)全過(guò)程、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架。軟件項(xiàng)目的開(kāi)發(fā)包括:需求、設(shè)...
    宇文臭臭閱讀 6,754評(píng)論 5 100
  • 文章來(lái)自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,216評(píng)論 2 126
  • 前幾天,玲姐在某三級(jí)醫(yī)院遇到了一個(gè)奇葩護(hù)士,發(fā)生了一些不愉快,作為護(hù)士長(zhǎng)的她,回到自己醫(yī)院,心情久久不能平靜,說(shuō)如...
    雨果的天空閱讀 275評(píng)論 2 2