IOS APP 代码覆盖率测试环境搭建详解

xcode支持统计手动测试的代码覆盖率,对于降低漏测率有显著的帮助,最近想要尝试一下这方面的调研,记录一下自己的实现方法。

持续更新中。。。。。。


第一步:安装ruby环境

mac电脑一般不会自带ruby,需要自己安装,如果已经安装了ruby的可以忽略

1.安装rvm$ curl -L https://get.rvm.io | bash -s stable

2.设载入rvm$ source ~/.rvm/scripts/rvm

3.检查是否安装成功:$ rvm -v

4.查看ruby版本:$ rvm list known

5.安装ruby$ rvm install 2.4

(注意:安装的目标文件夹当前用户必须有write权限,homebrew也要更新到最新版)

6.查看安装的ruby版本:$ rvm list

7.将安装的ruby设为系统默认版本:$ rvm 2.0.0 —default

第二步:安装cocoaPods

1.命令:sudo gem install cocoapods

(注意:这里可能需要电脑翻墙,有的人是使用了国内的源:http://code4app.com/article/cocoapods-install-usage

第三步:将XcodeCoverage插入到你的项目中

1.cd到工程路径下,新建一个Podfile文件:  vim Podfile

2.在文件中加入一行:pod 'XcodeCoverage', ‘~>1.0'

第三步:将XcodeCoverage插入到你的项目中

1.cd到工程路径下,新建一个Podfile文件:  vim Podfile

2.在文件中加入一行:pod 'XcodeCoverage', ‘~>1.0'

3.运行:pod install

这时可能会遇到一个问题,报错:error: RPC failed; curl 56 SSLRead() return error -36

这时因为安装了大于1Xcode导致的,需要明确一下Xcode路径

终端输入:sudo xcode-select -switch  /……./Xcode.app/Contents/Developer

之后重新执行:pod install

这时还可能会遇到错误:The dependency `XcodeCoverage (~> 1.0)` is not used in any concrete target.原因是最新版本的pop有语法变动还有SDK版本没有做兼容。

解决方法:vim Podfile

插入内容:target 'TestApp' do

        pod 'XcodeCoverage', '~>1.0'

        end

        platform :ios, '10.2'

保存退出重新执行:pod install

第四步:将待测target改成debug模式

如下图,需要改2个地方















这里解释一下target的含义,现在的app都会有不同的版本迭代如:1.0  2.0等,由于现在我使用的app是一个demo,所以只有一个target,可以在上图中的黄色iconTestAPP中切换target

此时再检查一下app能否正确在模拟器上运行,我在这里遇到了报错:ld: library not found for -lPods。原因是需要要打开后缀名为xcworkspace的文件运行。IOS项目当运用了cocopods引入第三方时不能打开原样式的文件 

第五步:项目中插入代码

app项目中找到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

}

第六步:在在模拟器中操作

1.build&run待测app,在模拟器中操作,点击Home键。IOS模拟器的HOME键:command+shift+H

2.cd 进入    项目/Pod/XcodeCoverage   运行:./getcov —show

就可以自动生成测试报告


注:这个时候可能会遇到以下问题

1.WARNING: no .da files found in /Users。。。。。。。 - skipping!

2.lcov: ERROR: no valid records found in tracefile coverage.info

原因主要可能有2点:

1.lcov-1.12   并不是最新版,只有1.12才开始兼容了ios10

下载链接:https://github.com/daihongchao/XcodeCoverage

2.linux环境导致的不适配,解决方法:

修改/envcov.sh

LCOV()

 {

    "${LCOV_PATH}/lcov" “$@"  

}

修改/getcov

"${LCOV_PATH}/genhtml" --ignore-errors source --output-directory . “${LCOV_INFO}"


问题都解决之后就可以查看到刚才操作的代码覆盖率报告了。


参考链接:

https://github.com/jonreid/XcodeCoverage/blob/master/README.md

https://testerhome.com/topics/6644

https://testerhome.com/topics/8468



发布了11 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/CONGHUAXIANSHENG/article/details/72179483