6

我最近开始对我为 iPhone 编写的应用程序进行单元测试。我有创建自己测试的基础,即使它看起来有点不理想。但是,我在使用 gcov 设置代码覆盖率分析时遇到了真正的麻烦。

我按照这里的说明进行操作:http ://www.cubiclemuses.com/cm/articles/2009/05/14/coverstory-on-the-iphone/ ,在其他地方的重复非常相似。我已经尝试使用他们的 Mac 工具箱中的Google 的 AppleScript来做到这一点,以防我在 Xcode 中输入错误。

我使用 Apple 的iPhoneUnitTests 示例作为基础项目,并简单地运行 Google 的 AppleScript 以启用针对 CalcTests 目标的代码覆盖测试,从而获得一个来源良好的自动化示例,说明它不起作用。无论我使用什么场景,我自己的代码,Apple 的,手动设置正确的变量或让谷歌的 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 文件,因此我没有什么可分析的。对此的任何帮助将不胜感激。

4

1 回答 1

6

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

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

于 2009-12-23T03:25:13.600 回答