我在10.6上使用Xcode 3.2,带有gcov的发布版本和默认的GCC编译器(版本4.2.1).我已经创建了一个依赖的Cocoa单元测试包,它被注入到我的应用程序中,并遵循Apple的文档来设置基于gcov检测的构建配置 - 基于Debug配置,该配置没有启用任何编译器优化.
当我使用这种'Gcov-instrumented'配置构建测试包时,应用程序启动并注入并运行测试.覆盖统计文件也是在以下位置生成的:
build/<AppTarget>.build/Gcov-instrumented/<AppTarget>.build/Objects-normal/x86_64/<object>.gcda
build/<AppTarget>.build/Gcov-instrumented/<AppTarget>.build/Objects-normal/x86_64/<object>.gcno
到现在为止还挺好.我知道测试确实在运行,因为如果我插入失败,那么测试套件会按预期失败.不幸的是,gcov报告测试中没有涉及任何对象线!每行报告为0覆盖.我在这里和Apple邮件列表档案中搜索过,找不到有类似问题的人.我希望我错过了什么 - 但它是什么?
我最近开始对我为iPhone编写的应用程序进行单元测试.我有创建自己的测试的基础知识,即使它看起来有点次优.但是,我在使用gcov设置代码覆盖率分析时遇到了麻烦.
我按照这里的说明进行操作:http://www.cubiclemuses.com/cm/articles/2009/05/14/coverstory-on-the-iphone/,在其他地方重复得非常相似.我试过在他们的Mac工具箱中使用谷歌的AppleScript,以防我在Xcode中输入错误.
我已经使用Apple的iPhoneUnitTests示例作为基础项目,只需运行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
Run Code Online (Sandbox Code Playgroud)
没有创建gcda文件,因此我无需分析.任何有关这方面的帮助将不胜感激.