我一直在尝试使用Xcode 9获取项目的代码覆盖率。所有测试用例都成功运行,但没有在“代码覆盖率”选项卡下生成代码覆盖率报告。我尝试了以下方法:1.启用“收集方案中的代码覆盖率”。1.为我的目标启用代码覆盖率支持。1.启用Showcase束选项。检查代码覆盖率报告需要额外的设置吗?或者我应该错过了什么?提前感谢。
r1zk6ea11#
在版本9.3中解决问题,以获得代码覆盖率目标-〉测试-〉选项-〉CodeCoverage参见图片:
fumotvh32#
如果您想在编辑器的右侧查看代码覆盖率,请确保在Editor下拉菜单中选择了Show Code Coverage。
bvjveswy3#
我很确定他们只是把代码覆盖移到了一个新的位置,我现在看到它是报告导航器的一部分(见下面的截图)。首先打开代码覆盖率支持(编辑方案-〉测试-〉选项-〉选中代码覆盖率框),然后在导航器中查看xcode的左手,在顶部你会看到一堆图标,点击右侧的最后一个图标(看起来像一个消息气泡)。在这个标签页中,你会看到你运行的所有测试。在每个测试中有一个“覆盖率”项。点击其中一个来获得这个特定测试的覆盖率报告。
z8dt9xmd4#
Apple方面存在已知漏洞,解决了UI测试目标(https://openradar.appspot.com/24006783)的缺失代码覆盖率。Xcode版本9.3 beta(9Q98q)似乎解决了问题,只要在测试模式中未启用Debug executable。在Xcode构建方案编辑器Test -> Info tab -> Debugger中,确保未选中复选框Debug executable。
Debug executable
Test -> Info tab -> Debugger
f2uvfpb95#
如果您和我一样,在模式中的Target -〉Test上没有看到Option选项卡(或任何选项卡),这意味着您需要将测试模式添加到应用中,或者选择了错误的Target。首先选择“管理方案......”,然后查看您是否有TargetTest以及是否选中。
Option
其次,添加(小+按钮)并选择您的测试目标。
顺便说一下,如果你没有测试包,请先把它添加到你的测试包列表中。
现在您将看到您的测试包,并可以选择和编辑它。您将看到Options选项卡,以及接受答案中提到的Code Coverage。
Options
Code Coverage
3phpmpom6#
旧的错误,当你不得不取消选择调试器'调试可执行'在编辑方案的信息选项卡(测试调试)-似乎已经解决,但有一个新的ARM M1,所以如果没有测试覆盖显示-尝试构建“我的Mac(Rosetta)”或如果失败,由于使用特定于平台的框架,如UIKit在我的情况下为“我的Mac(Mac Catalyst,Rosetta)。会慢一些,但应该能用。
euoag5mw7#
如果您正在开发一个框架,那么您需要在两个地方启用代码覆盖率。首先,你需要创建一个独立的测试框架的方案。要启用这个方案的代码覆盖率,进入你项目的方案并选择“编辑方案”。然后,从左边的菜单中选择“测试”并选中“收集覆盖率数据”旁边的复选框。第二,你需要为Clang编译器启用代码覆盖。要做到这一点,请转到你的项目设置并为你的框架选择目标。然后,转到“构建设置”并选择“Apple Clang -代码生成”。由于测试只在调试模式下运行,请确保在调试下的“启用代码覆盖支持”选项中选择“是”。
7条答案
按热度按时间r1zk6ea11#
在版本9.3中解决问题,以获得代码覆盖率目标-〉测试-〉选项-〉CodeCoverage参见图片:
fumotvh32#
如果您想在编辑器的右侧查看代码覆盖率,请确保在Editor下拉菜单中选择了Show Code Coverage。
bvjveswy3#
我很确定他们只是把代码覆盖移到了一个新的位置,我现在看到它是报告导航器的一部分(见下面的截图)。
首先打开代码覆盖率支持(编辑方案-〉测试-〉选项-〉选中代码覆盖率框),然后在导航器中查看xcode的左手,在顶部你会看到一堆图标,点击右侧的最后一个图标(看起来像一个消息气泡)。
在这个标签页中,你会看到你运行的所有测试。在每个测试中有一个“覆盖率”项。点击其中一个来获得这个特定测试的覆盖率报告。
z8dt9xmd4#
Apple方面存在已知漏洞,解决了UI测试目标(https://openradar.appspot.com/24006783)的缺失代码覆盖率。
Xcode版本9.3 beta(9Q98q)似乎解决了问题,只要在测试模式中未启用
Debug executable
。在Xcode构建方案编辑器
Test -> Info tab -> Debugger
中,确保未选中复选框Debug executable
。f2uvfpb95#
如果您和我一样,在模式中的Target -〉Test上没有看到
Option
选项卡(或任何选项卡),这意味着您需要将测试模式添加到应用中,或者选择了错误的Target。首先选择“管理方案......”,然后查看您是否有TargetTest以及是否选中。
其次,添加(小+按钮)并选择您的测试目标。
顺便说一下,如果你没有测试包,请先把它添加到你的测试包列表中。
现在您将看到您的测试包,并可以选择和编辑它。您将看到
Options
选项卡,以及接受答案中提到的Code Coverage
。3phpmpom6#
旧的错误,当你不得不取消选择调试器'调试可执行'在编辑方案的信息选项卡(测试调试)-似乎已经解决,但有一个新的ARM M1,所以如果没有测试覆盖显示-尝试构建“我的Mac(Rosetta)”或如果失败,由于使用特定于平台的框架,如UIKit在我的情况下为“我的Mac(Mac Catalyst,Rosetta)。
会慢一些,但应该能用。
euoag5mw7#
如果您正在开发一个框架,那么您需要在两个地方启用代码覆盖率。
首先,你需要创建一个独立的测试框架的方案。要启用这个方案的代码覆盖率,进入你项目的方案并选择“编辑方案”。然后,从左边的菜单中选择“测试”并选中“收集覆盖率数据”旁边的复选框。
第二,你需要为Clang编译器启用代码覆盖。要做到这一点,请转到你的项目设置并为你的框架选择目标。然后,转到“构建设置”并选择“Apple Clang -代码生成”。由于测试只在调试模式下运行,请确保在调试下的“启用代码覆盖支持”选项中选择“是”。