iOS(Object-C)手工测试代码覆盖率统计 - XcodeCoverage

环境搭建

  1. mac OS系统升级到最新版, AppStroe下载安装
    MacOS 下载安装不用翻墙, 正常网络就行, 但是极其花时间, 差不多要花3个小时
  2. xcode版本也升级到最新版
    xcode最新版本下载安装也很花时间, 我有现成的安装包, 所以下载没花时间, 安装大概1小时
  3. APP源码下载打开
    APP源码我使用SourceTree管理下载, xcode打开源码
  4. 编译配置,
    这个就很泪目了, 每个工程都不一样, 最好找开发看, 能避免很多坑
    模拟器不用开发者证书,直接编译安装
    真机: 1. 设备的udid加入了这个APP的开发者证书, 2. 找开发要signing证书, 装在xcode里

执行步骤

参考文档: iOS (Object-C) 非单元测试状态下代码覆盖率获取尝鲜 · TesterHome

  1. app 项目添加XcodeCoverage依赖
    公司内部的项目, 我没有提交代码的权限, 找开发加入了这个依赖
    XcodeCoverage使用最新版本, 下面这一步就不用做了
  2. 其他步骤按照文档来

模拟器

模拟器完全按照文档能得出结果

真机

操作步骤稍微不同

  1. 在 xcode 中 build ,然后 run
  2. 在应用中做出操作
  3. 点击 home 键,应用进入后台,同时应用自动生成对应覆盖率文件
  4. 打开 Xcode->window->Devices ,选择运行应用的真机
  5. 在 Installed Apps 部分选择运行的应用,然后点击底部的齿轮按钮,选择 ‘Download Container’
  6. 把生成的 xcappdata 文件保存下来,然后在 finder 中打开
  7. 对 xcappdata 文件右键->显示包内容(show package content),然后打开 AppData/Documents/arm64/ ,拷贝里面的所有 .gcda 文件
  8. 进入 项目目录/Pod/XcodeCoverage ,打开 env.sh, 找到标红的路径, 把拷贝的.gcda拷入这个路径

  1. 回到 项目目录/Pod/XcodeCoverage ,运行命令 ./getcov --show ,即可自动生成覆盖率报告。

XcodeCoverage 分析

在项目目录/Pod/XcodeCoverage的目录下, 有一些脚本文件, 这些文件是做代码统计的核心内容

env.sh解析

exportenv.sh 解析

exportenv.sh在代码编译的时候, 会执行, 它把获取到的env.sh里用到的四个地址写入env.sh文件.

exportenv.sh在项目的这里被执行执行

我们编译代码(command+B)可以只编译, 会看到编译日志里, 执行到这个脚本

参考文章

https://testerhome.com/topics/6644