iOS本地集成单元测试覆盖率工具XcodeCoverage

1.在Podfile文件里面添加第三方库,如下:

pod'XcodeCoverage','~>1.0'

github地址:https://github.com/daihongchao/XcodeCoverage

2.Edit  Scheme将Code Coverage勾选,确保"Gather coverage data"是被选中的,然后点击关闭按钮;

iOS本地集成单元测试覆盖率工具XcodeCoverage_第1张图片

3.pod安装后需要配置工程:设置 Build Settings中

“Instrument Program Flow”两个选项,分别设置Debug下为YES

iOS本地集成单元测试覆盖率工具XcodeCoverage_第2张图片

3.选择pods下的  HKCoinModule需要设置两个地方,找到 “Generate Test Coverage Files”和“Instrument Program Flow”两个选项,分别设置Debug下为YES

4.设置 Build Phases,点击New Run Script Phase,编辑使其运行Pods/XcodeCoverage/exportenv.sh脚本

5.工程配置完后,开始跑单元测试例

6.cd到XcodeCoverage里面,打开env.sh文件,修改路径export OBJECT_FILE_DIR_normal="/Users/zz/Library/Developer/Xcode/DerivedData/HKCoinModule-gtxwijyxislqzcdcistkzyamyvra/Build/Intermediates/CodeCoverage/Intermediates/Pods.build/Debug-iphonesimulator/HKCoinModule.build/Objects-normal"(原来路径在HKCoinModule.build下面,现在改为Pods.build,业务代码在pods里面)

export SRCROOT="/Users/zz/Desktop/HKr_IOS_HKCoinModule/HKCoinModule"

7.在项目中找到APPDelegate.m文件,修改如下部分:

- (void)applicationDidEnterBackground:(UIApplication *)application

{

#if NT_COVERAGE

#if !TARGET_IPHONE_SIMULATOR

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

setenv("GCOV_PREFIX", [documentsDirectory cStringUsingEncoding:NSUTF8StringEncoding], 1);

setenv("GCOV_PREFIX_STRIP", "13", 1);

#endif

extern void __gcov_flush(void);

__gcov_flush();

#endif

}

第一个setenv的意思是将数据的根目录设置为app的Documents; 第二个setenv的意思是strip掉一些目录层次,因为覆盖率数据默认会写入一个很深的目录层次

8.运行单元测试,cd进入到XcodeCoverage目录,运行如下脚本:

./getcov --show

便可看到结果:

iOS本地集成单元测试覆盖率工具XcodeCoverage_第3张图片

参考文章:

http://www.cnblogs.com/longhuihu/p/4032611.html

http://www.jianshu.com/p/efe2d3ec481a

http://blog.csdn.net/conghuaxiansheng/article/details/72179483

你可能感兴趣的:(iOS本地集成单元测试覆盖率工具XcodeCoverage)