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