iOS 單元測試覆蓋率統(tǒng)計(jì) lcov

iOS 單元測試覆蓋率統(tǒng)計(jì)腳本

1、首先安裝 lcov
brew install lcov

安裝 lcov 的同時(shí),會安裝依賴 genhtml

分析 xcode 代碼覆蓋率文件,并生成可視化的 html

2、工程配置

Scheme 配置

Test 選項(xiàng) Code Coverage 勾選

Build settings 設(shè)置

instrument program flow = yes
generate legacy test coverage files = yes
3、開始單元測試

執(zhí)行全部單元測試方法,模擬器執(zhí)行測試

xcodebuild test -scheme schemeName -target targetName -destination 'platform=iOS Simulator,name=iPhone 7 Plus,OS=12.1'
4、拷貝單元測試覆蓋率文件至目標(biāo)文件夾

從 xcodeproj 文件獲得覆蓋率文件夾的絕對路徑

project_setting=$(xcodebuild -showBuildSettings -scheme $scheme_name -project $projectpath -json)
echo $project_setting | jq -r '.[0].buildSettings.PROJECT_TEMP_DIR' > $outputpath/setting.txt
project_setting_out=`cat $outputpath/setting.txt`
detail_path="Debug-iphonesimulator/$scheme_name.build/Objects-normal/x86_64"
project_output_dir=$project_setting_out/$detail_path

從獲得的絕對路徑拷貝文件至臨時(shí)文件夾

cp $project_output_dir/*.gcno $outputpath/tmp
cp $project_output_dir/*.gcda $outputpath/tmp

for file_name in ${exit_file_name[@]};do
    echo $file_name
    rm $outputpath/tmp/$file_name
done
echo 'output'

project_dir=$(pwd)

exit_file_name 是一個(gè)需要過濾文件的數(shù)組,不想統(tǒng)計(jì)覆蓋率文件,可以按照 xxxx.* 放入數(shù)組

outputpath 是導(dǎo)出的結(jié)果文件路徑,默認(rèn)是在當(dāng)前目錄下

exit_file_name=('SV*')
outputpath='./cover_output' 
5、生成可視化的覆蓋率統(tǒng)計(jì)表
lcov -c -d $outputpath/tmp -b $project_dir -o $outputpath/coverage.info

genhtml -t 單元測試報(bào)告 $outputpath/coverage.info -o $outputpath

6、完整腳本地址及使用方法

代碼

使用方法:

按照配置之后,使用命令或者手動單元測試之后,將 report.sh 文件放入 xcodeproj 同級目錄,使用如下命令獲得覆蓋率報(bào)告

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

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