代碼覆蓋率是Xcode7的功能,可以在視覺上看到和衡量你的代碼測試覆蓋率。有了代碼覆蓋率,你可以確定測試是否符合你的預(yù)期。
啟用代碼覆蓋率
Xcode的代碼覆蓋率由LLVM支持的測試操作。當(dāng)你啟用代碼覆蓋率,LLVM基于方法和函數(shù)調(diào)用的頻率來收集覆蓋數(shù)據(jù)。代碼覆蓋率選項(xiàng)可以收集單元測試和UI測試正確性和性能數(shù)據(jù),
編輯scheme的測試操作可以啟用代碼覆蓋率。
1.在scheme編輯菜單中選擇Edit Scheme。
2.選擇測試操作。
3.勾選代碼覆蓋率復(fù)選框收集覆蓋率數(shù)據(jù)。
4.點(diǎn)擊關(guān)閉。
注意:收集代碼覆蓋率數(shù)據(jù)會導(dǎo)致性能損耗。無論損耗是否顯著,它均會影響執(zhí)行代碼的線性方式,因此在測試運(yùn)行中啟用代碼覆蓋率,性能結(jié)果依然具有可比性。然而,當(dāng)你正在認(rèn)真評估測試程序性能時(shí),你應(yīng)該考慮是否啟用代碼覆蓋率。
代碼覆蓋率如何符合測試
代碼覆蓋率是用來衡量測試價(jià)值的工具。它回答了以下問題
- 當(dāng)你運(yùn)行測試時(shí),什么代碼真正運(yùn)行?
- 多少測試才算足夠?
- 換句話說,你是否設(shè)計(jì)足夠的測試確保你所有的代碼都檢查了正確性和性能?
- 代碼的哪部分沒有被測試?
在測試運(yùn)行完成后,Xcode采用LLVM覆蓋數(shù)據(jù)并在報(bào)告導(dǎo)航中創(chuàng)建覆蓋率報(bào)告,參見覆蓋率面板。它顯示了測試的摘要信息,源文件和源文件中的方法列表以及每個(gè)文件中的覆蓋百分比。
源代碼編輯器展示了文件中代碼的行數(shù)并高亮未執(zhí)行的代碼。它高亮需要覆蓋的代碼區(qū)域而非已經(jīng)覆蓋的區(qū)域。
例如,將指針放在 -[Calculator input:]
方法上,將顯示一個(gè)按鈕,將你導(dǎo)航到源代碼。
覆蓋注釋在右邊顯示,顯示了在測試中代碼某個(gè)特定部分被執(zhí)行的次數(shù)。例如:
input:
方法,在測試中被頻繁調(diào)用。然而,有部分方法并未被調(diào)用。在源代碼編輯器中有明顯的標(biāo)記,如圖:
報(bào)告數(shù)據(jù)和顯示建議編寫一個(gè)測試,包括意外或無效的字符確保錯(cuò)誤按照你的方式處理。