2

我最近一直在学习如何使用 GHUnit for iPhone 编写单元测试。但是,我不知道如何通过 xCode 4 设置代码覆盖率来处理这个问题。

googletubes(不知何故)在这件事上并不是特别有帮助。

4

2 回答 2

2

我在这篇博客文章中介绍了如何使用 GHUnit 获得代码覆盖率(免责声明:我是作者)

简要总结一下,对于 GHUnit,您需要:

  • 在 Xcode 项目的测试目标中启用两个构建设置“生成测试覆盖文件”和“仪器程序流程”
  • 在测试目标的 main.m 文件中添加 fopen$UNIX2003 和 fwrite$UNIX2003 函数的代码,而不是在 AppDelegate 中。这就是我的 main.m 文件的样子:


    #import <UIKit/UIKit.h>

    int main(int argc, char *argv[])
    {
        @autoreleasepool {
            return UIApplicationMain(argc, argv, nil, @"GHUnitIOSAppDelegate");
        }
    }

    FILE *fopen$UNIX2003(const char *filename, const char *mode) {
        return fopen(filename, mode);
    }

    size_t fwrite$UNIX2003(const void *ptr, size_t size, size_t nitems, FILE *stream) {
        return fwrite(ptr, size, nitems, stream);
    }

  • 编辑您的测试目标 .plist 并添加属性“应用程序不在后台运行”,其值为“是”。请注意,这很有用,因为仅在应用程序退出时才写入覆盖文件。

有关更详细的解释/截图,请参阅上面的博客文章。这篇文章更加详尽,因为它还涵盖了 Jenkins 集成和 OCUnit。

于 2012-08-29T08:42:48.837 回答
0

这里有一个答案声称已经在 XCode 4 中获得了代码覆盖率,尽管我还没有验证它:

代码覆盖率未显示使用 Xcode + gcov 的结果

于 2011-04-12T02:43:20.867 回答