可可 – 为什么gcov不报告我的单元测试覆盖的任何线?

可可 – 为什么gcov不报告我的单元测试覆盖的任何线?,第1张

概述我使用10.6版本的Xcode 3.2,gcov和默认GCC编译器(版本4.2.1)的发货版本.我已经创建了一个依赖的Cocoa单元测试包,它被注入到我的应用程序中,并根据Apple的文档 setting up a gcov-instrumented build configuration – 基于启用了任何编译器优化的Debug配置. 当我使用“Gcov-instrumented”配置构建测试包 我使用10.6版本的Xcode 3.2,gcov和默认GCC编译器(版本4.2.1)的发货版本.我已经创建了一个依赖的Cocoa单元测试包,它被注入到我的应用程序中,并根据Apple的文档 setting up a gcov-instrumented build configuration – 基于启用了任何编译器优化的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覆盖.我在这里和苹果邮件列表档案馆中搜索过,找不到有类似问题的人.我期望我错过了一些东西 – 但是是什么呢?

解决方法 间歇性地遇到这个问题.在我的主要项目中,我发现了一个很幸运的时间,那里的“主要工作”.通过大多数工作,我的意思是我能够得到覆盖面,但是比10.5更痛苦.例如,为了获得任何更新,我不得不大力删除覆盖文件并进行重建.即使在我的“勉强工作”状态下,编译器/运行时似乎也不愿意覆盖现有的覆盖数据文件.

我想我已经绊倒了一个工作场景.巫毒肯定,不太理想:

>确保SDK是10.6.
>确保部署设置为gcc 4.0(!).
>做好项目的全面干预.
>重建.

这是否可以获得预期的覆盖率数据?

当然,我希望能够生成使用gcc 4.2或其中一个LLVM编译器的coverage文件,但这似乎让我比以前稍微减少一些.

另一个线索:当我观察覆盖数据(使用Google的Cover Story)时,会收到以下警告:

/buildrESulTS/MarsEdit.build/Code Coverage/MarsEditDataModelTests.build/Objects-normal/i386/MEDataItem.gcno:version ‘400A’,prefer ‘402*’

但覆盖信息仍然存在.所以看起来它在一个较旧的覆盖格式版本中是吵的,但是如果我使用较新的编译器(4.2),这可能会生成较新的格式.gcno文件,0%的覆盖问题会让我像Graham那样困扰我.

总结

以上是内存溢出为你收集整理的可可 – 为什么gcov不报告我的单元测试覆盖的任何线?全部内容,希望文章能够帮你解决可可 – 为什么gcov不报告我的单元测试覆盖的任何线?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1030559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存