2009-12-22 73 views
6

我最近开始单元测试我为iPhone编写的应用程序。我有基本的创建我自己的测试,即使它看起来有点不理想。然而,我很难用gcov设置代码覆盖率分析。如何在iPhone SDK中设置gcov进行代码覆盖率分析?

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

我已经使用Apple的iPhoneUnitTests sample作为基础项目,并且只是运行Google的AppleScript,以针对CalcTests目标启用代码覆盖测试,以获得源代码无法运行的源代码自动化示例。不管我用什么情况下,我自己的代码,苹果,手动设置适当的变量或让谷歌的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文件没有创建,因此我没有什么可以分析的。 任何帮助,这将不胜感激。

回答

6

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

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