1

我有一个使用安装程序的 Cocoa 应用程序。我希望能够在代码上运行代码覆盖(在安装之后)。

这不是通常的单元测试场景,其中单个二进制文件将运行一组测试。相反,有问题的测试将在运行时与 UI 和应用程序后端交互,因此我理想情况下希望能够启动应用程序,知道 Gcov 正在对其进行分析,然后针对它运行测试。

有任何想法吗?

更新

感谢 mustISignUp。为了澄清我为什么问这个问题:

我犯的错误是认为对象、.gcno 和 .gcda 文件必须与二进制文件一起安装(从而使安装程序变得困难)。碰巧的是,文件的原始位置与检测代码一起被硬连接到代码中。

我采用的解决方案是在构建机器上压缩代码并将其放在测试机器上的磁盘上。lcov(或只是gcov)可以从那里运行。或者,将在磁盘上创建 .gcda 文件,并且必须将它们复制回包含源代码的机器。

无论哪种方式,源代码都不必在安装和运行时出现,但如果您想将结果恢复为 lcov 样式,则生成的覆盖率计数器文件必须与源代码一致。

4

1 回答 1

1

该应用程序需要使用正确的 GCC 标志进行编译,这会将分析指令插入代码中。这不是您可以打开和关闭的东西。即您的代码在编译时被修改以输出覆盖信息。

因此,如果您使用正确的标志编译应用程序,它将发出覆盖数据,如果您不这样做,它不会(而且您肯定不希望它用于您要分发的应用程序)。

于 2010-06-14T13:25:55.117 回答