如何在Xcode未显示代码覆盖率时显示它?

36

我一直在尝试使用 Xcode 9 获取项目的代码覆盖率。所有测试用例都成功运行,但在代码覆盖选项卡下没有生成代码覆盖报告。

我尝试了以下几个步骤:

  1. 在方案中启用收集代码覆盖率。

  2. 为我的目标启用代码覆盖支持。

  3. 启用展示包选项。

    是否需要额外的设置来查看代码覆盖报告?或者我可能忽略了什么吗?先谢谢了。


你尝试在实际设备上运行了吗?这可能是一个错误。 - Tamás Sengel
不,我是在模拟器上运行。让我试试设备上的运行情况。 - yo2bh
请尝试按照苹果文档中提供的步骤进行操作。 - sagarkothari
仍然存在问题,尝试这个。 - sagarkothari
8个回答

51

问题解决方法在版本9.3中,获取代码覆盖率的步骤是:目标 -> 测试 -> 选项 -> 代码覆盖率。请参考下图:

image



有人知道如何从命令行设置“为某些目标收集覆盖率”吗?我只想输出主应用程序的结果,而不是所有框架和扩展的结果。 - Genki

29
如果你想在编辑器的右侧看到代码覆盖率,请确保你已在“编辑器”下拉菜单中选择了“显示代码覆盖率”。 Show Code Coverage

1
在我的情况下,有两个问题,这里解释了其中一个,另一个是测试 -> 选项 -> 覆盖率。 - Javier Calatrava Llavería

14

我很确定他们只是将代码覆盖率移到了新位置。现在它出现在报告导航器的一部分中(请参见下面的屏幕截图)。

要进入那里,首先需要开启代码覆盖支持(编辑模式->测试->选项->勾选代码覆盖框),然后在xcode的导航器左侧查看。在顶部,您将看到一堆图标。单击最右侧的一个(看起来像消息气泡)。

在该选项卡中,您将看到运行的所有测试。每个测试中都有一个“覆盖率”项目。点击其中一个以获取该特定测试的覆盖率报告。

xcode窗口


12

苹果端存在已知漏洞,未能完全覆盖UI测试目标代码(https://openradar.appspot.com/24006783)。

Xcode 9.3 beta版本(9Q98q)似乎解决了这个问题,只要在测试模式下未启用Debug executable

在Xcode构建方案编辑器中的Test-> Info选项卡 -> Debugger确保复选框Debug executable未被选中。


8

我在目标 -> 测试中没有找到选项。 目标 -> 测试中没有选项

我发现代码覆盖率设置已经移动到测试计划配置中。
在测试导航器中选择自动创建的测试计划,然后选择编辑测试计划 -> 在配置中找到代码覆盖率。然后您应该将其保存为新的测试计划。

Code coverage in the Test plan


1
如果您喜欢我,但在目标 -> 测试架构中看不到选项选项卡(或任何选项卡),那么这意味着您需要向您的应用程序添加测试架构或选择错误的目标。
首先选择“管理方案...”并查看您是否有您的TargetTest,并且它是否被选中。

Manage Schemes...

第二步,添加(小加号按钮),并选择您的测试目标。

enter image description here

顺便提一句,如果您没有测试包,请先将其添加到绑定列表中。 enter image description here 现在您将看到您的测试包,并可以选择和编辑它。您还将看到“选项”选项卡和“代码覆盖率”,如接受答案所述。

0

旧的错误是当你必须在编辑方案的信息选项卡中取消选择调试器“调试可执行文件”(用于测试调试)- 似乎已经解决了,但在ARM M1上有一个新的错误,所以如果没有显示测试覆盖率,请尝试构建“我的Mac(Rosetta)”,或者如果由于使用特定于平台的框架(例如我的情况下的UIKit)而失败,则尝试构建“我的Mac(Mac Catalyst,Rosetta)”。

它会更慢,但应该可以工作。


0
如果您正在开发框架,则需要在两个地方启用代码覆盖率。
首先,您需要为测试框架创建一个独立的方案。要为此方案启用代码覆盖,请转到项目方案并选择“编辑方案”。然后,从左侧菜单中选择“测试”,并选中“收集覆盖率数据”旁边的复选框。
其次,您需要为Clang编译器启用代码覆盖。要做到这一点,请转到您的项目设置并选择框架的目标。然后,转到“生成设置”并选择“Apple Clang - 代码生成”。由于测试仅在DEBUG模式下运行,请确保在DEBUG下选择“是”以启用“启用代码覆盖支持”选项。

Code Coverage


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接