iPhone上的GHUnit代码覆盖率

时间:2011-04-12 02:23:14

标签: iphone xcode4 code-coverage gh-unit

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

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

2 个答案:

答案 0 :(得分:2)

我介绍了如何在this blog article中使用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并添加属性'应用程序不在后台运行',值为'YES'。请注意,这很有用,因为只有在应用程序退出时才会写入coverage文件。

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

答案 1 :(得分:0)

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

Code coverage not showing results using Xcode + gcov