我最近一直在学习如何使用GHUnit for iPhone编写单元测试。但是,我不知道如何通过xCode 4设置代码覆盖范围以与此一起使用。

googletube在(这方面)没有特别帮助。

最佳答案

我在this blog article中介绍了如何使用GHUnit进行代码覆盖(免责声明:我是作者)

简而言之,对于GHUnit,您需要:


在Xcode中,在项目的测试目标中启用两个生成设置“ Generate Test Coverage Files”和“ Instrument Program Flow”
将fopen $ UNIX2003和fwrite $ UNIX2003函数的代码添加到测试目标的main.m文件中,而不是在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并添加值为“是”的属性“应用程序未在后台运行”。请注意,这很有用,因为仅在应用程序退出时才写入coverage文件。


有关更多详细的说明/屏幕截图,请参见上面的博客文章。本文更加详尽,因为它还介绍了Jenkins集成和OCUnit。

10-08 16:01