IOS APP 代码覆盖率测试环境搭建详解
来源:互联网 发布:红叶知弦本子 编辑:程序博客网 时间:2024/05/21 07:48
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
这时因为安装了大于1个Xcode导致的,需要明确一下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
- IOS APP 代码覆盖率测试环境搭建详解
- iOS UI自动化测试与代码覆盖率
- 获取Android代码测试覆盖率详解
- Cobertura测试代码覆盖率
- 代码覆盖率测试
- 代码覆盖率测试
- 关于测试代码覆盖率
- 关于代码覆盖率测试
- coverage 测试代码覆盖率
- ios测试覆盖率收集
- 使用真机进行IOS功能测试代码覆盖率统计
- 利用gcov测试代码覆盖率
- 利用gcov测试代码覆盖率
- Flex代码覆盖率测试工具
- 代码覆盖率测试工具gcov
- 代码覆盖率测试,gcov, lcov
- 代码覆盖率测试工具gcov
- 测试项目代码执行覆盖率
- OKHTTP3 简单使用-包含上传文件
- linux 文件同步
- Excel数据导出
- CQOI新年好
- 汇总:基于SSM封装的一个迅速开发项目的底层框架集成项目
- IOS APP 代码覆盖率测试环境搭建详解
- 编辑时下拉列表的回显
- MVC、MVVM、RaectiveCocoa的总结
- Eclipse安装JD-Eclipse反编译插件
- 消去桌面图标下面的问号的一种方法
- FileAudit v5.2发布,支持Windows Server 2016
- Debian8.7+PROXMOX 安装过程(全程无图)
- 禁止“勒索病毒”攻击的解决办法
- 硅谷正在为它疯狂,飞行汽车真的会一飞冲天吗?