Jenkins实现iOS自动化测试及覆盖率报告输出

一、Jenkins安装,Xcode插件安装
  略
二、Xcode工程准备
Xcode工程(这里我用的是workspace)包含两个Target,一个是UnitTest项目


image.png

打开Xcode左上角Manage Schemes,将Shared打钩


image.png

选中项目的Scheme点击左下角Edit,打开Gather coverage data,打开覆盖率收集,在Debug模式下会收集覆盖率报告。


image.png

写好UnitTestCase,command+u跑一下,在Xcode里可以看到用例结果报告和覆盖率报告。


image.png

三、集成到Jenkins实现自动化测试

新建Job,设置源码branch,这里最好新建一个专门用于测试的branch,这里取名HuaXiaFinance-iOS-test.

image.png

设置构建触发器*/5 * * * *,每5分钟检查一次源码变化。


image.png

增加构建步骤,选择Execute shell


image.png

!/bin/sh -l

source /etc/profile

cd ./huaxia-ios/HuaXiaFinance2.0

xcodebuild test -workspace HuaXiaFinance.xcworkspace -scheme HuaXiaFinanceTests -destination 'platform=iOS Simulator,name=iPhone 6,OS=11.2' -enableCodeCoverage YES 2>&1 | ocunit2junit

slather coverage --html --input-format profdata --binary-file /Users/huaxiajinrong/Library/Developer/Xcode/DerivedData/HuaXiaFinance-dyxskvcwlazyufhahtutvjhorkwr/Build/Products/Debug-iphonesimulator/HuaXiaFinance.app/HuaXiaFinance --scheme HuaXiaFinanceTests --workspace HuaXiaFinance.xcworkspace --configuration Debug --output-directory reports HuaXiaFinance.xcodeproj

这里用到两个工具, ocunit2junit 以及slather.

1、由于Jenkins只接收Junit的单元测试报告,这里要安装一个将脚本执行结果的ocunit格式的测试报告转化为JUnit报告格式的脚本,该项目名叫OCUnit2JUnit,项目地址点这里。安装非常简单,命令行下执行gem install ocunit2junit(可能需要sudo权限)。

2、代码覆盖率
xcode test完成后生成的代码覆盖率文件为Coverage.profdata,存放路径/Users/huaxiajinrong/Library/Developer/Xcode/DerivedData/HuaXiaFinance-dyxskvcwlazyufhahtutvjhorkwr/Build/ProfileData/C054A844-6A3C-4CF5-9ED0-D1165EF6C46C/Coverage.profdata

覆盖率文件用llvm-cov解析,命令如下:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/llvm-cov report -instr-profile /Users/huaxiajinrong/Library/Developer/Xcode/DerivedData/HuaXiaFinance-dyxskvcwlazyufhahtutvjhorkwr/Build/ProfileData/C054A844-6A3C-4CF5-9ED0-D1165EF6C46C/Coverage.profdata /Users/huaxiajinrong/Library/Developer/Xcode/DerivedData/HuaXiaFinance-dyxskvcwlazyufhahtutvjhorkwr/Build/Products/Debug-iphonesimulator/HuaXiaFinance.app/HuaXiaFinance

这里采用slather去做覆盖文件可视化报告的生成,你可以把slather当作llvm-cov的一个前端生成工具。
//https://github.com/SlatherOrg/slather
安装如下:
install : sodu gem install slather

这里用slather的时候一直报错
命令行如下:
slather coverage -s --scheme HuaXiaFinanceTests --workspace HuaXiaFinance.xcworkspace HuaXiaFinance.xcodeproj
报错如下:
No product binary found in /Users/liaodan/Library/Developer/Xcode/DerivedData/HuaXiaFinance-avwgmcmxqiypmmdhvmglmtwnnzcx/Build/Intermediates.noindex/ProfileData/ED52BCDB-9142-4D42-A7AB-7E37B480F653.
被这个问题困扰了两天,最后再github上找到了解决办法,参照:
https://github.com/SlatherOrg/slather/issues/192

slather coverage --html --input-format profdata --binary-file /Users/huaxiajinrong/Library/Developer/Xcode/DerivedData/HuaXiaFinance-dyxskvcwlazyufhahtutvjhorkwr/Build/Products/Debug-iphonesimulator/HuaXiaFinance.app/HuaXiaFinance --scheme HuaXiaFinanceTests --workspace HuaXiaFinance.xcworkspace --configuration Debug --output-directory reports HuaXiaFinance.xcodeproj

当然--binary-file 用这种绝对路径的方式指出不太合理,后续有待优化。

四、读取显示junit和覆盖率html报告
  这里用到两个jenkins插件,jenkins->系统管理-> 管理插件,找到JUnit Plugin和HTML Publisher plugin,安装重启jenkins。
  增加构建后操作,选择Publish Junit test result report,配置xml文件路劲为第三步配置的test-reports/*.xml。

image.png

点击立即构建,等待构建完成,返回job主页,可以看到junit测试结果报告和覆盖率的图表了。

image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容