我最近一直在学习如何使用GHUnit为iPhone编写单元测试。然而,我不知道如何通过xCode 4设置代码覆盖来处理这个问题。
googletube(不知怎么的)在这件事上并没有特别的帮助。
我在这篇博客文章中介绍了如何使用GHUnit获得代码覆盖率(免责声明:我是作者)
简单总结一下,对于GHUnit,您需要:
- 在Xcode 中,在项目的测试目标中启用两个构建设置"生成测试覆盖文件"one_answers"Instrument Program Flow"
- 在main中增加了fopen$UNIX2003和fwrite$UNIX2003函数的代码。测试目标的m文件,而不是在AppDelegate中。这就是我的主要。
#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 '。请注意,这很有用,因为覆盖率文件只在应用程序退出时写入。
有关更详细的解释/截图,请参阅上面的博客文章。这篇文章更加详尽,因为它还涵盖了Jenkins集成和OCUnit。
这里有一个答案,声称已经在XCode 4中获得了代码覆盖,尽管我还没有验证它:
代码覆盖率不显示使用Xcode + gcov的结果