gpt4 book ai didi

cocoa - 为什么 gcov 不报告我的单元测试覆盖的任何行?

转载 作者:行者123 更新时间:2023-12-03 16:02:44 24 4
gpt4 key购买 nike

我在 10.6 上使用 Xcode 3.2,以及附带的 gcov 版本和默认的 GCC 编译器(均为 4.2.1 版本)。我创建了一个依赖的 Cocoa 单元测试包,将其注入(inject)到我的应用程序中,并遵循 Apple 关于 setting up a gcov-instrumented build configuration 的文档。 - 基于未启用任何编译器优化的调试配置。

当我使用此“Gcov-instrumented”配置构建测试包时,应用程序将启动,测试将被注入(inject)并运行。此外,覆盖率统计文件生成于:

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 上的痛苦要多一些。例如,我必须积极删除覆盖文件并重建才能获得任何更新。即使在我的“勉强工作”状态下,编译器/运行时似乎也不愿意覆盖现有的覆盖率数据文件。

我想我已经偶然回到了工作场景。当然是 Voodoo,但不太理想:

  1. 确保 SDK 为 10.6。
  2. 确保部署设置为 gcc 4.0 (!)。
  3. 对项目进行全面清理。
  4. 重建。

这是否能为您提供预期的覆盖数据?

当然,我希望能够生成使用 gcc 4.2 或 LLVM 编译器之一工作的覆盖文件,但目前这似乎让我比以前稍微好一些。

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

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

但覆盖范围信息仍然显示。因此,它似乎对较旧的覆盖格式版本犹豫不决,但如果我使用较新的编译器(4.2),它可能会生成较新的格式 .gcno 文件,那么 0% 覆盖率问题就会困扰我格雷厄姆。

关于cocoa - 为什么 gcov 不报告我的单元测试覆盖的任何行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1385568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com