Jenkins實現(xiàn)iOS自動化測試及覆蓋率報告輸出

一、Jenkins安裝,Xcode插件安裝

二、Xcode工程準(zhǔn)備

Xcode工程(這里我用的是workspace)包含兩個Target,一個是UnitTest項目


工程Target

打開Xcode左上角Manage Schemes,將Shared打鉤

Scheme設(shè)置

選中項目的Scheme點擊左下角Edit,打開Gather coverage data,打開覆蓋率收集,在Debug模式下會收集覆蓋率報告。

打開覆蓋率收集

寫好UnitTestCase,command+u跑一下,在Xcode里可以看到用例結(jié)果報告和覆蓋率報告。

測試結(jié)果報告
覆蓋率報告

三、集成到Jenkins實現(xiàn)自動化測試

新建Job,設(shè)置源碼branch,這里最好新建一個專門用于測試的branch,這里取名unittest。

新建Job
設(shè)置源碼

設(shè)置構(gòu)建觸發(fā)器*/5 * * * *,每5分鐘檢查一次源碼變化。

設(shè)置構(gòu)建觸發(fā)器

增加構(gòu)建步驟,選擇Execute shell腳本

構(gòu)建腳本

輸入腳本:

#!/bin/bash -l
#新建目錄用于保存報告
mkdir test-reports

#pod可能失敗的全局參數(shù)設(shè)置
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

pod install

#xcodebuild test -workspace XXX.xcworkspace -scheme XXXTests -destination 'platform=iOS Simulator,name=iPhone 6s'跑測試用例
#-enableCodeCoverage YES 收集測試覆蓋率
#ocunit2junit 輸出報告轉(zhuǎn)換為jenkins可讀的junit報告
xcodebuild test -workspace XXX.xcworkspace -scheme XXXTests -destination 'platform=iOS Simulator,name=iPhone 6s' -configuration Debug -enableCodeCoverage YES 2>&1 | ocunit2junit

#slather coverage轉(zhuǎn)換覆蓋率報告為html文件,jenkins可讀
#--input-format profdata  xcode生成的為profdata格式的文件,轉(zhuǎn)換為html以便jenkins顯示
#--ignore 排除篩選需要計算的文件,多個格式寫多個ignore表達(dá)式
slather coverage --html --input-format profdata --binary-basename XXXApp --scheme XXXTests --workspace XXX.xcworkspace --configuration Debug --ignore **View** --ignore **AppText** --output-directory reports XXX.xcodeproj

這里用到兩個工具, ocunit2junit 以及slather.

嘗試過用xctool,但是一直編譯不成功,于是又換回了xcodebuild。

四、讀取顯示junit和覆蓋率html報告

這里用到兩個jenkins插件,jenkins->系統(tǒng)管理-> 管理插件,找到JUnit PluginHTML Publisher plugin,安裝重啟jenkins。
增加構(gòu)建后操作,選擇Publish Junit test result report,配置xml文件路勁為第三步配置的test-reports/*.xml。

Junit報告配置

再增加一個構(gòu)建后操作,選擇Publish HTML reports, 配置html路勁為第三步配置的reports,Index文件為index.html,可以設(shè)置標(biāo)題Reports title為Coverage Report

HTML覆蓋率報告配置

點擊立即構(gòu)建,等待構(gòu)建完成,返回job主頁,可以看到j(luò)unit測試結(jié)果報告和覆蓋率的圖表了。

測試結(jié)果和趨勢報告
測試覆蓋率報告

文章是后面寫的,可能有遺漏的地方,如果有任何疑問和問題請給我留言。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容