iOS自動(dòng)化單元測(cè)試之fastlane中xcodebuild與xcov(二)

上一篇文章iOS自動(dòng)化單元測(cè)試之Xcode自帶工具xcodebuild與xccov仰剿,已將講了用xcode自帶工具進(jìn)行單元測(cè)試,但是存在一些問(wèn)題,測(cè)試結(jié)果在終端,可視化太差瑞躺,而且拿不到解析的json文件闸与。接下來(lái)我們講解一個(gè)自動(dòng)化單元測(cè)試的工具fastlane。

一屎慢、環(huán)境檢查:

1环肘、檢查ruby版本

查看本機(jī)已安裝的ruby版本號(hào)复哆,要求版本>2.0

$ ruby -v

顯示

ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]

2、使用rvm管理ruby版本

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

使用rvm

$ source /Users/xiaonan/.rvm/scripts/rvm

列出ruby可安裝版本列表

$ rvm list known

安裝ruby 2.5.1

$ rvm install 2.5.1

安裝過(guò)程中會(huì)檢查系統(tǒng)是否有安裝Homebrew牙咏,按照默認(rèn)路徑安裝Homebrew丁寄,輸入回車鍵

使用ruby 2.5.1

$ rvm use 2.5.1 --default

3伊磺、檢查Xcode的CLT是否安裝

安裝Command Line Tools

$ xcode-select --install

如果沒(méi)有安裝則自動(dòng)安裝屑埋,否則會(huì)顯示一下錯(cuò)誤

xcode-select: error: command line tools are already installed, use "Software Update" to install updates

二、fastlane的安裝

1痰滋、安裝fastlane

$ [sudo] gem install fastlane -NV

查看安裝的fastlane版本

$ fastlane --version

顯示

fastlane installation at path:
/Users/bijietao/.rvm/gems/ruby-2.5.1/gems/fastlane-2.103.1/bin/fastlane
-----------------------------
[?] ?? 
fastlane 2.103.1

2、在iOS項(xiàng)目中初始化fastlane

首先在終端進(jìn)去項(xiàng)目根目錄

然后初始化fastlane

$ fastlane init

初始化時(shí)出現(xiàn)4個(gè)選項(xiàng)多艇,選4手動(dòng)設(shè)置

1\. ??  Automate screenshots
2\. ?????  Automate beta distribution to TestFlight
3\. ??  Automate App Store distribution
4\. ??  Manual setup - manually setup your project to automate your tasks

之后初始化命令會(huì)自動(dòng)執(zhí)行bundle update下載項(xiàng)目需要的依賴庫(kù)

初始化完成后逻恐,項(xiàng)目的根目錄會(huì)多2個(gè)文件:Gemfile、Gemfile.lock, Gemfile里面定義了該項(xiàng)目的軟件包依賴的相關(guān)事項(xiàng),和Podfile梢莽、Podfile.lock類似

三、xcov的安裝

1奸披、安裝xcov

sudo gem install xcov

顯示

Password:
Fetching: xcov-1.4.3.gem (100%)
Successfully installed xcov-1.4.3
Parsing documentation for xcov-1.4.3
Installing ri documentation for xcov-1.4.3
Done installing documentation for xcov after 0 seconds
1 gem installed

2昏名、項(xiàng)目中添加xcov

xcode9.3不需要添加

xcode9.2需要在Gemfile中添加 gem "xcov"

四、執(zhí)行fastlane自動(dòng)化測(cè)試

1阵面、項(xiàng)目中需先創(chuàng)建xcworkspace轻局,file -> new ->workspace,創(chuàng)建好后將.xcodeproj 拖到xcworkspace下,否則后面執(zhí)行時(shí)命令時(shí)會(huì)報(bào)下面的錯(cuò)

[18:22:18]: ? xcodebuild: error: 'BJTUnitTestsDemo.xcworkspace' does not exist.
+------------------------------+--------------+
|                Lane Context                 |
+------------------------------+--------------+
| DEFAULT_PLATFORM             | ios          |
| PLATFORM_NAME                | ios          |
| LANE_NAME                    | ios unittest |
| XCODEBUILD_DERIVED_DATA_PATH |              |
+------------------------------+--------------+
[18:22:18]: Exit status of command 'set -o pipefail && xcodebuild test -scheme "BJTUnitTestsDemo" -workspace "BJTUnitTestsDemo.xcworkspace" -destination "platform=iOS Simulator,name=iPhone 8 Plus,OS=11.3" | tee '/Users/bijietao/Library/Logs/fastlane/xcbuild/2018-09-13/61665/xcodebuild.log' | xcpretty --color --test' was 66 instead of 0.
xcodebuild: error: 'BJTUnitTestsDemo.xcworkspace' does not exist.

2样刷、在Fastfile中添加下面的腳本代碼

1)xcodebuild說(shuō)明可參考上一篇文章:iOS自動(dòng)化單元測(cè)試之Xcode自帶工具xcodebuild與xccov
2)xcov說(shuō)明仑扑,挑選幾個(gè)重要的講解一下xcov的源碼
Key Description Default
workspace 項(xiàng)目的workspace
project 項(xiàng)目的project
scheme 項(xiàng)目的scheme
output_directory 覆蓋率輸出路徑
html_report 是否輸出html文件 true
markdown_report 是否輸出markdown文件 false
json_report 是否輸出json文件 false
ignore_file _path 忽略文件的路徑 *
3) Fastfile中的腳本代碼
default_platform(:ios)

platform :ios do

  desc "自動(dòng)化測(cè)試"

  lane :unittest do 
    UI.message("start  xcodebuild")
    xcodebuild(
      test: true,
      scheme: "BJTUnitTestsDemo",
      workspace: "BJTUnitTestsDemo.xcworkspace",
      destination: "platform=iOS Simulator,name=iPhone 8 Plus,OS=11.3"
    )
    UI.message("success  xcodebuild")

    UI.message("start  xcov")
    xcov(
      workspace: "BJTUnitTestsDemo.xcworkspace",
      scheme: "BJTUnitTestsDemo",
      html_report: "true",
      json_report: "true",
      output_directory:"BJTUnitTests"
    )
    UI.message("success  xcov")

    desc "讀取覆蓋率"
    file = File.read(File.expand_path("/Users/bijietao/Desktop/BJTUnitTestsDemo/BJTUnitTests/report.json"))
    if file
        data = JSON.parse(file)
        UI.message(data)
        UI.message(data["coverage"])
   else
      UI.error("Unable to open file!")
      return
   end
  end

end

3、終端進(jìn)去項(xiàng)目根目錄 執(zhí)行 fastlane unittest

1)可以看到工程目錄下多了一個(gè)文件
4_3_1.png
2)終端的效果
4_3_2.png
3)html文件的效果
4_3_3.png

五置鼻、參考資料

fastlane官網(wǎng)地址 (有詳細(xì)教程)

fastlane源碼

xcov的源碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末镇饮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子箕母,更是在濱河造成了極大的恐慌储藐,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嘶是,死亡現(xiàn)場(chǎng)離奇詭異钙勃,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)聂喇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)辖源,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人希太,你說(shuō)我怎么就攤上這事克饶。” “怎么了誊辉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵彤路,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我芥映,道長(zhǎng)洲尊,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任奈偏,我火速辦了婚禮坞嘀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惊来。我一直安慰自己丽涩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著矢渊,像睡著了一般继准。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上矮男,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天移必,我揣著相機(jī)與錄音,去河邊找鬼毡鉴。 笑死崔泵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的猪瞬。 我是一名探鬼主播憎瘸,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼陈瘦!你這毒婦竟也來(lái)了幌甘?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤痊项,失蹤者是張志新(化名)和其女友劉穎含潘,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體线婚,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡遏弱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了塞弊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片漱逸。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖游沿,靈堂內(nèi)的尸體忽然破棺而出饰抒,到底是詐尸還是另有隱情,我是刑警寧澤诀黍,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布袋坑,位于F島的核電站,受9級(jí)特大地震影響眯勾,放射性物質(zhì)發(fā)生泄漏枣宫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一吃环、第九天 我趴在偏房一處隱蔽的房頂上張望也颤。 院中可真熱鬧,春花似錦郁轻、人聲如沸翅娶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)竭沫。三九已至燥翅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜕提,已是汗流浹背森书。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贯溅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓躲查,卻偏偏與公主長(zhǎng)得像它浅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子镣煮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容