iphone - 如何在iPhone SDK中设置gcov进行代码覆盖率分析?

标签 iphone cocoa unit-testing gcov

我最近开始对我为 iPhone 编写的应用程序进行单元测试。我已经掌握了创建自己的测试的基础知识,即使它看起来有点次优。然而,我在使用 gcov 设置代码覆盖率分析时遇到了真正的麻烦。

我按照此处的说明进行操作:http://www.cubiclemuses.com/cm/articles/2009/05/14/coverstory-on-the-iphone/ ,这在其他地方也非常类似地重复。我尝试过使用Google's AppleScript从他们的 Mac 工具箱中执行此操作,以防万一我在 Xcode 中输入错误。

我用过Apple的iPhoneUnitTests sample作为一个基础项目,只需运行 Google 的 AppleScript 即可针对 CalcTests 目标进行代码覆盖测试,以获得一个来源良好的自动化示例,说明它不起作用。无论我使用什么场景,我自己的代码,Apple 的,手动设置适当的变量或让 Google 的 AppleScript 为我做这件事,一旦测试运行完成,我得到的只是调试控制台中的这些错误:

profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/CalcViewController.gcda:Skip
profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/Calculator.gcda:Skip
profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/CalcAppDelegate.gcda:Skip
profiling:/Users:Cannot create directory
profiling:/Users/jpo/Downloads/iPhoneUnitTests/build/iPhoneUnitTests.build/Debug-iphoneos/CalcTesting.build/Objects-normal/armv6/main.gcda:Skip

gcda 文件没有创建,因此我没有什么可分析的。 任何有关此问题的帮助将不胜感激。

最佳答案

解决方案是这些指南引用了在 iPhone 模拟器中运行代码。因为我正在运行应用程序级别测试,所以我正在进行交叉分析并且需要遵循 this information .

然后,我设置环境变量 GCOV_PREFIX 将其转储到应用程序的 Documents 目录中,然后使用 Xcode 中的 Organizer 从设备下载应用程序包,以从 Documents 目录中获取 .gcda 文件。这是相当麻烦的,几乎不适合自动覆盖测试,但考虑到在沙箱中运行和使用仅可用于在设备上测试的类(即 MediaPlayer.framework)的限制,这是我能看到的唯一解决方案。

关于iphone - 如何在iPhone SDK中设置gcov进行代码覆盖率分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1945229/

相关文章:

objective-c - 如何将 C 风格的 char* 数组转换为 NSArray?

objective-c - NSApplication 退出最前面的应用程序状态 : hide v. 停用

unit-testing - 如何对时序逻辑进行单元测试?

ios - 尝试在 UICollectionViewCell 上设置 subview 的框架

ios - NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) 可以返回多个条目吗?

c# - 测试闭包

java - 这是集成测试还是单元测试? (在 Spring 测试休息 Controller )

iphone - 如何在 iPhone (iOS) 中暂停/恢复下载

ios - Swift:根据可见框架更改中心约束

iphone - 为几个ios版本导入 header ?