Jenkins實現iOS自動化測試及覆蓋率報告輸出

weixin_33816300發表於2017-06-28

一、Jenkins安裝,Xcode外掛安裝

二、Xcode工程準備

Xcode工程(這裡我用的是workspace)包含兩個Target,一個是UnitTest專案


1684547-f359ab0c35eac6b7.png
工程Target

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

1684547-56b327fbcac13585.png
Scheme設定

選中專案的Scheme點選左下角Edit,開啟Gather coverage data,開啟覆蓋率收集,在Debug模式下會收集覆蓋率報告。

1684547-a49eef76657adc25.png
開啟覆蓋率收集

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

1684547-00ab0f07ecdbd37c.png
測試結果報告
1684547-9f11fbc54b80d7a5.png
覆蓋率報告

三、整合到Jenkins實現自動化測試

新建Job,設定原始碼branch,這裡最好新建一個專門用於測試的branch,這裡取名unittest。

1684547-bc854aa56a44fa55.png
新建Job
1684547-7c0e51a09d029fbb.png
設定原始碼

設定構建觸發器*/5 * * * *,每5分鐘檢查一次原始碼變化。

1684547-6ec541101a5aea16.png
設定構建觸發器

增加構建步驟,選擇Execute shell指令碼

1684547-e61f2a654fc02913.png
構建指令碼

輸入指令碼:

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

#pod可能失敗的全域性引數設定
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 輸出報告轉換為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轉換覆蓋率報告為html檔案,jenkins可讀
#--input-format profdata  xcode生成的為profdata格式的檔案,轉換為html以便jenkins顯示
#--ignore 排除篩選需要計算的檔案,多個格式寫多個ignore表示式
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->系統管理-> 管理外掛,找到JUnit PluginHTML Publisher plugin,安裝重啟jenkins。
增加構建後操作,選擇Publish Junit test result report,配置xml檔案路勁為第三步配置的test-reports/*.xml

1684547-bd23cfb71300f77e.png
Junit報告配置

再增加一個構建後操作,選擇Publish HTML reports, 配置html路勁為第三步配置的reports,Index檔案為index.html,可以設定標題Reports title為Coverage Report

1684547-39746e84c954e461.png
HTML覆蓋率報告配置

點選立即構建,等待構建完成,返回job主頁,可以看到junit測試結果報告和覆蓋率的圖表了。

1684547-0698c7f9245dfd4e.png
測試結果和趨勢報告
1684547-408dc1f37c726932.png
測試覆蓋率報告

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

相關文章