代碼覆蓋是Xcode 7中的一個功能蝗锥,它使您可以可視化和測量您的代碼是由測試執(zhí)行冒晰。使用代碼覆蓋痛侍,您可以確定您的測試是否正在完成您的預期工作。
啟用代碼覆蓋
Xcode中的代碼覆蓋是LLVM支持的測試選項径荔。當啟用代碼覆蓋時,LLVM將基于調用方法和函數(shù)的頻率來收集覆蓋數(shù)據(jù)的代碼寿羞。代碼覆蓋選項可以收集數(shù)據(jù)以報告正確性和性能的測試猖凛,無論是單元測試還是UI測試。
您可以通過編輯方案的測試操作來啟用代碼覆蓋绪穆。
1.從方案編輯器菜單中選擇編輯方案辨泳。
2.選擇測試操作。
3.啟用代碼覆蓋復選框以收集覆蓋數(shù)據(jù)玖院。
4.點擊Close菠红。
注意: 代碼覆蓋率數(shù)據(jù)收集會導致性能損失。無論懲罰是否重要难菌,它都應該以線性方式影響代碼的執(zhí)行试溯,因此,當啟用時郊酒,性能結果在測試運行和測試運行之間保持可比性遇绞。但是,當您嚴格評估測試中例程的性能時燎窘,應考慮是否啟用代碼覆蓋摹闽。
代碼覆蓋如何適應測試
代碼覆蓋率是測量測試值的工具。它回答問題
1.運行測試時褐健,實際運行的代碼是什么付鹿?‘
2.多少測試足夠的測試?
換句話說蚜迅,你架構了足夠的測試舵匾,以確保所有的代碼正在檢查正確性和性能?
3.你的代碼的哪些部分沒有被測試谁不?
測試運行完成后坐梯,Xcode接收LLVM覆蓋率數(shù)據(jù),并使用它在Reports導航器中創(chuàng)建覆蓋率報告拍谐,如Coverage窗格中所示烛缔。它顯示有關測試運行的摘要信息,文件中源文件和函數(shù)的列表以及每個文件的覆蓋百分比轩拨。
源編輯器顯示文件中每行代碼的計數(shù)践瓷,并突出顯示未執(zhí)行的代碼。它突出顯示需要覆蓋的代碼區(qū)域亡蓉,而不是已經(jīng)覆蓋的區(qū)域晕翠。
例如,將指針懸停在-[Calculator input:]上面的coverage報告中的方法上,會顯示一個按鈕淋肾,將您帶到注釋的源代碼硫麻。
覆蓋注釋在右邊繪制,并顯示在測試期間命中代碼的特定部分的次數(shù)的計數(shù)樊卓。例如:
根據(jù)input:上述計數(shù)拿愧,該方法在測試中頻繁調用。但是碌尔,有一些方法的部分沒有調用浇辜。這在源代碼編輯器中清楚地標記,如下所示:
此報告數(shù)據(jù)和顯示建議有機會寫入包含意外或無效字符的測試唾戚,以確保錯誤處理以你預期的方式工作柳洋。