組件開發之-基于Jenkins使用Calabash配置iOS功能測試

原創 2017-03-16

直接進入正題,關于Jenkins環境搭建、Ruby環境配置、fastlane使用等請參考我的另一片文章 基于Jenkins搭建iOS持續集成開發環境

通過Ruby 的gem安裝calabash

 gem install calash-cucumber  
 calabash-ios

新建一個工程 CalabashSample

由于我們這里使用了fastlane來進行自動化構建,建議你:

  fastlane init  # 按照提示輸入你的AppId,工程Bundle Identifier(如果在AppStore上沒有該Identifier)
  
  touch Gemfile  # 成功之后,進入到你的fastlane文件夾創建一個Gemfile的文件

  #在文件中添加如下內容(根據自己項目需要添加)
  ###### start #####
  source 'https://gems.ruby-china.org/'

  gem 'fastlane', '2.20.0'
  gem 'slather', '2.3.0'
  gem 'gym', '2.0.0'
  gem 'xcov'
  
  #### end ####

  bundle install  # 在終端執行此命令,至此前期準備工作已經完成
  

集成calabash.framework到工程

在工程中如果為了使用Calabash,需要將calabash.framework與工程關聯起來,calabash.framework是Objective-C的,同樣也適用于使用Swift工程。
???有三種方式可以集成:

  • 方式一 --- 創建一個新的Calabash Config
    1. 創建一個新的Configuration, 名字可以隨意,但是這里我們既然功能測試使用的是Calabash,不妨就使用 Calabash 這個名稱


    2. 下載Calabash.framework,還記得之前我們準備階段的Gemfile嗎?你現在需要在文件里面添加上:

  gem "calabash-cucumber", ">= 0.16", "< 2.0"
 # 這里你也可以不用寫出版本號直接 gem "calabash-cucumber" 即可  
  # 然后你就可以在Gemfile所在的目錄執行下列語句來下載了
  bundle exec calabash-ios download
  1. 把calabash.framework與工程關聯,添加如下關聯flags
  -ObjC 
-force_load
# 這里一定要看看你的路徑是否正確,我這里因為用到fastlane就多了一個fastlane
 "$(SOURCE_ROOT)/fastlane/calabash.framework/calabash" -framework  
CFNetwork
  1. 創建一個新的scheme



  2. 開始構建運行,請記住你在上一步驟配置的Calabash scheme,選擇并運行即可,如果出現下圖結果,表明配置成功



  • 方式二 --- 通過配置Debug Config
    ???相信你通過上述配置之后也看出來了,我們只不過新增加了一個Calabash Configuration,既然我們存在了一個Debug Configuration了,就沒有必要再新創建一個Configuration,然后再進行Calabash 配置
    1. 重復上述 2、3 步驟
    2. 配置Scheme
    3. 重復上述4、5 步驟即可
  • 方式三 --- 通過創建新的Target
    1. 創建一個新的Target

    2. 修改Target名稱
    3. 修改Bundle Identifier
    4. 更改Info.plist
    5. 設置Scheme
    6. 現在參考 ** 方式一或者方式二 ** 構建運行

在模擬器上運行Calabash

  • 初始化cucumber
  # 生成features文件結構
  bundle exec calabash-ios gen  
  # 或者你也可以通過
  bundle exec cucumber --init

上述兩個命令生成的features目錄是不相同的,但是不影響

  • 執行cucumber
  bundle exec cucumber

如果執行上述命令后,出現錯誤,那是因為cucumber不能找到你的xxx.app,你需要告訴cucumber可以從哪里找到你的xxx.app
Xcode默認構建的地址是:

~/Library/Developer/Xcode/DerivedData/<UDID>/Build/Products/Debug-iphonesimulator/<NAME>.app

你可以通過:

  export ~/Library/Developer/Xcode/DerivedData/<UDID>/Build/Products/Debug-iphonesimulator/<NAME>.app 
  # 或者
  export XCODEPROJ=../<NAME>.xcodeproj

  # 開始執行
  bundle exec cucumber

如何使用cucumber

在這里我以登錄功能為例

  • 創建一個Feature
  • 生成step
    首先根據你的feature生成step:
  bundle exec cucumber -d <NAME>.feature

然后創建一個與你feature相關的step在steps目錄下,如:loging_step.rb,生成的結果拷貝到文件中:

  • 完善你的step

更多Calabash的用法請查閱Calabash官方網站

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容