XcodeCoverage 是一個基于lcov的統(tǒng)計工具,用于計算Xcode項目的單元測試覆蓋率,且能生成html格式的統(tǒng)計報表。配置過程可以分為以下幾個步驟:
- 為工程添加
XcodeCoverage代碼 - 更新Xcode工程Scheme
- 注入提取環(huán)境變量的腳本
為工程添加XcodeCoverage代碼
使用CocoaPods可以方便地添加XcodeCoverage代碼。修改Podfile并執(zhí)行pod install命令。
# Podfile
...
pod 'XcodeCoverage', '~>1.0'
...
更新Xcode工程Scheme
-
在
Configurations下新增一個配置項,一般可以通過Duplicate "Debug" Configuration得到,并改名為Coverage。
-
設(shè)置
Project->Build Settings->Instrument Program Flow為YES
-
設(shè)置
Project->Build Settings->Generate Coverage Test Files為YES
更新Pods的xcconfig文件
復(fù)制一份Pods的xcconfig文件。例如我的工程名為MttHD,則需要復(fù)制一份Pods-MttHD.debug.xcconfig,更名為Pods-MttHD.coverage.xcconfig,并引入工程。
注入提取環(huán)境變量的腳本
在Build Phases中新增一個New Run Script Phase,添加下面的腳本:
if [ "${CONFIGURATION}" == "Coverage" ]
then
Pods/XcodeCoverage/exportenv.sh
else
echo "ignore coverage"
fi
運行XcodeCoverage
如果是第一次運行,首先要clean一下工作目錄,Product -> Clean。
接下來執(zhí)行任意一個單元測試,然后執(zhí)行命令bash ./Pods/XcodeCoverage/run_code_coverage_post.sh。
Tips
- 計算覆蓋率的過程,需要在build過程中生成一些額外的文件,在開發(fā)調(diào)試的時候用不到,所以新增一個Scheme,以免降低Debug的build效率。
- 通過注入提取環(huán)境變量的腳本,我們可以獲取build過程中所有的環(huán)境變量。環(huán)境變量的列表可以查看以往的build log。
- 第一次運行之前clean工作目錄,因為在新增的Scheme目錄下工作需要生成依賴的Pod庫文件。