【发布时间】:2013-03-15 00:41:18
【问题描述】:
我有几个带有单元测试的项目,我想在其中测量覆盖率。所以我按照How-to for CoverStory 和网络上其他地方的详细说明进行操作。
我将-fprofile-arcs 和-ftest-coverage 添加到我的测试目标和被测目标,并按照指定链接到/Developer/usr/lib/libprofile_rt.dylib。
而且它有效!当我在 iPhone 模拟器下运行测试方案时,我得到了我的代码覆盖率、我的测试以及应用程序的构建和运行。
但是,当我回到实际 iPhone 硬件上的运行方案时,我收到 libprofile_rt.dylib 的链接错误。具体来说,我得到
ld: 找不到 -lprofile_rt 的库
我在这里怀疑的是 libprofile_rt 实际上是一个用于 Mac 硬件的库,而 iPhone 显然不能链接到为 Mac 构建的二进制文件,一般来说。
我的问题是如何在 iPhone 硬件上运行并获得我的代码覆盖率?
我怀疑我可以使用仅用于测试的 Debug 目标的副本来执行此操作,但这会带来维护另一个目标的额外麻烦。有没有其他方法可以让这个工作?我在做傻事吗?
【问题讨论】:
-
在 /Developer/Platforms/iPhoneOS.platform/Developer/usr/lib/libprofile_rt.dylib 有这个 lib 的 iOS 版本 也许你应该尝试将新目标与这个链接
-
很好的发现,但这给了我不同的错误:我收到一条警告说“忽略文件 /Developer/.../libprofile_rt.dylib,文件中缺少所需的架构 armv7。”因为链接器忽略了该文件,所以我得到未定义的符号错误。所以我在构建设置中为我的目标和硬编码 armv7 去架构并得到同样的东西。
标签: iphone unit-testing xcode4 code-coverage llvm