使用 Xcode 检测代码覆盖率

“代码覆盖率”是软件测试中的一种度量,用于描述工程中源代码被测试到的比例和程度。

在做单元测试时,代码覆盖率经常被拿来作为衡量测试质量好坏的指标,同时也能在一定程度上检测出工程中的冗余代码。

Xcode 7 以后自带了代码覆盖率检测工具,并在 Xcode 9.3 中重写该功能,大大提升了性能和准确性。不过 Xcode 的 Code Coverage 仅适用于单元测试场景。

我们可以新建一个工程,勾选包含单元测试(Include Unit Tests),然后在 Edit Scheme -> Test -> Options -> Code Coverage 中开启收集代码覆盖率,如图 1 所示。

接下来在每次执行完单元测试后(Command + U),可以在 Report Navigator 中查看结果,如图 2 所示,我们可以看到每一个类、方法在本次测试的覆盖率,并且双击可以打开查看代码,哪些有被执行,哪些没有被执行。

完整的使用可以查看 WWDC18 Session 403: What’s New in Testing

此外,关于 iOS 代码覆盖率检测的原理和增量代码测试覆盖率工具实现,可以查看美团技术团队的这篇文章