简介
上一篇文章 Jenkins 自动化打包 iOS 项目 已经介绍了 Jenkins,以及在 mac 上安装 Jenkins。本文来介绍一下使用 Jenkins 来完成自动化测试,并输出测试覆盖率。
有关 iOS 单元测试的内容,可以查看之前的文章 iOS 单元测试 - XCTest。
iOS 测试覆盖率
首先在 Xcode 中开启 Coverage ,可以选择你要收集覆盖率的 target,那些 pods 里面的第三方的库就不要勾选了,只需测试查看项目中的覆盖率。
打开之后,点击测试,测试执行完成后就可以看到代码的覆盖率了。
Jenkins 自动化测试
有关 Jenkins 安装在上篇文章中已经介绍了,这里我们直接看一下在 Jenkins 上自动化测试的流程。
安装工具
首先需要在 mac 上安装一下 OCUnit2JUnit 和 slather。
1、安装 OCUnit2JUnit
OCUnit2JUnit 是一个脚本,可将 OCUnit 的输出转换为 JUnit 使用的格式。 主要目的是能够在 Jenkins 上解析 OCUnit 测试用例的输出。
1 | sudo gem install ocunit2junit -n /usr/local/bin |
2、安装 slather
slather 为 Xcode 项目生成测试覆盖率报告,并将其挂接到 Jenkins 上。
1 | sudo gem install nokogiri |
Jenkins 配置
首先在 Jenkins 插件管理中,搜索安装插件 JUnit 和 HTML Publisher。
插件安装完成之后,就可以进行后面的操作了。
1、在 Jenkins 中新建任务。
2、在配置构建中,添加 执行 shell,输入命令:
1 | cd ${WORKSPACE}/my-test |
注意上面的 ${WORKSPACE} 就是项目文件夹所在的位置,如果项目代码就在这个文件夹里,后面就不用跟路径了,不然就重复了。
然后注意 scheme 名称,和 workspace 名称,如果项目没有使用 pod,只有 .xcodeproj 文件就不用加 –workspace 选项了,–ignore 忽略第三方的代码。
还有 /usr/local/bin/slather,/usr/local/bin/ocunit2junit 这个前面要加上文件路径,不然报错说找不到 slather 和 ocunit2junit。
3、添加构建后的操作
添加 publish JUnit test result report
测试报告 xml 文件路径你就写,test-reports/*.xml 就行,不用管项目中有没有这个文件夹,运行时会自动生成,test-reports 这个文件夹,然后生成的 xml 文件放在这里,你写别的文件夹运行会报错,说找不到文件,最好每次运行把这个 test-reports 文件夹删除,遇到重复运行的会报错。
添加 publlish html reports
输入导出的 html 文件名,这个直接写个名字就行了,导出的 html 就是在项目代码文件夹下面,会自动生成你输入的名字文件,然后生成成功后会导入到 .jenkins/jobs/项目名/htmlreports/CodeCoverage 文件夹中,你看到的报告网页就是这个,不知为何,在Jenkins 只能打开 index.html 的页面链接点击定位错误,直接在文件夹里点击 index.html 网页显示正常。
4、立即构建
配置完成之后,就可以构建了,任务执行完成之后会生成代码覆盖率的报告,可以查看各个代码文件的覆盖率。
构建执行完在项目文件夹下生成有关 html 文件,你可以打开网页查看。