Calabash-android是支持android的UI自動化測試框架,網上看見不少同窗說,安裝calabash比較費勁,特別是Windows下安裝,也沒有一個詳細的安裝手冊可供參考。正好,今天在Windows 7 上安裝calabash-android成功,忍不住要分享一下。html
我爲何要特別在標題中指出中文Win7?
由於我第一次在英文Win7下沒碰到任何問題,第二次在中文Win7下安裝碰到兩個大問題,但都被我求助百度解決了。
第一個問題:中文Win7下不認識手機設備,第一臺英文Win7下已經有人安裝了豌豆莢。
第二個問題:中文Win7下運行calabash-android,報GBK錯誤。java
calabash簡介:android
Calabash-android是支持android的UI自動化測試框架,PC端使用了cucumber框架,經過http和json與模擬器和真機上安裝的測試apk通訊,測試apk調用robotium的方法來進行UI自動化測試,支持webview操做。git
calabash-android 的git網址: https://github.com/calabash/calabash-androidgithub
進入Installation: https://github.com/calabash/calabash-android/blob/master/documentation/installation.mdweb
由於要在Windows下安裝,因此按照指示進入: http://rubyinstaller.org/ 點擊紅色的Download圖標,進入: http://rubyinstaller.org/downloads/shell
Ruby2.0聽說不兼容舊版本,因此下載穩定版Ruby 1.9.3-p545.7z 解壓到D:\下apache
把ruby的執行目錄D:\ruby-1.9.3-p545-i386-mingw32\bin,加入到環境變量Pathjson
運行命令ruby -v,看到以下結果,表示ruby安裝成功windows
C:\Users\asus>ruby -v ruby 1.9.3p545 (2014-02-24) [i386-mingw32]
安裝JDK網上有不少教程,如下簡略介紹。
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
jdk-7u65-windows-x64.exe
安裝,並設置環境變量:
JAVA_HOME=C:\Program Files\Java\jdk1.7.0_65 Path添加內容: ";%JAVA_HOME%\bin;%JAVA_HOME%\..\jre\bin"
啓動命令行工具cmd.exe,輸入:
C:\Users\asus>javac -version javac 1.7.0_65
看到上述結果,說明jdk已正確安裝。
到 http://developer.android.com/sdk/index.html 下載適用於Windows的SDK
google的網站,國內正常訪問不了了。
幸虧有箇中國好碼農整理了一個最新版Android SDK下載網站:
http://www.androiddevtools.cn/
我如今的是 ADT Bundle > 23.0.2 > Windows > 64位
由於個人Windows7已經安裝了64位的JDK,因此必須安裝64位的Android SDK(主要是64位的Eclipse)
在目錄D:\adt-bundle-windows-x86_64-20140702\eclipse下雙擊文件eclipse.exe
看到Android Develop Kit啓動頁:
設置環境變量: ANDROID_HOME=D:\adt-bundle-windows-x86_64-20140702\sdk
網址:http://ant.apache.org/bindownload.cgi
下載 apache-ant-1.9.4-bin.zip
解壓到D:\下,
設置環境變量:
ANT_HOME=D:\apache-ant-1.9.4 Path添加內容: ";%ANT_HOME%\bin"
啓動命令行工具cmd.exe,輸入:
C:\Users\asus>ant Buildfile: build.xml does not exist! Build failed
看到上述結果,說明ant已正確安裝。
設置gem的倉庫爲taobao
C:\Users\asus>gem sources -l *** CURRENT SOURCES *** http://rubygems.org/ C:\Users\asus>gem sources --remove http://rubygems.org/ http://rubygems.org/ removed from sources C:\Users\asus>gem sources -a http://ruby.taobao.org/ http://ruby.taobao.org/ added to sources C:\Users\asus>gem sources -l *** CURRENT SOURCES *** http://ruby.taobao.org/
用gem命令安裝calabash-android
C:\Users\asus>gem install calabash-android ... Installing RDoc documentation for escape-0.0.4... Installing RDoc documentation for calabash-android-0.5.1... C:\Users\asus>calabash-android version 0.5.1
https://github.com/calabash/calabash-android-demoapp
點擊 Download ZIP下載calabash-android-demoapp-master.zip,並解壓到D:\
選擇: D:\calabash-android-demoapp-master
把手機經過USB線接到電腦上,手機上確保打開「USB調試」 若是電腦屏幕右下角提示,設備驅動已正確安裝,請看下一步。
若是電腦屏幕右下角提示,設備驅動安裝失敗:
須要到網站 http://www.drivergenius.com/ 下載並安裝驅動精靈標準版,只要打開驅動精靈,就會引導你安裝手機驅動。
驅動安裝成功後:
接下去在ADT中運行Run > Run As > Android Application:
點擊"OK"按鈕,ADT就會上傳AndroidDemoProject.apk到手機,並啓動應用,看到「Hello World, AndroidDemoProject!」
打開cmd,進入D:\calabash-android-demoapp-master\calabash目錄,運行:
calabash-android run D:\calabash-android-demoapp-master\bin\AndroidDemoProject.apk
主要錯誤信息:helpers.rb:105:in `scan': invalid byte sequence in GBK
但是我在英文Windows上運行正確啊,必定是英文系統和中文系統的缺省編碼問題:
cmd > 屬性 > 選項 > 當前代碼頁:936 簡體中文 GBK
照着 http://blog.sina.com.cn/s/blog_628e2ab30101ajcg.html 的解決方案,把cmd的中文編碼設置成UTF-8
cmd中輸入:chcp 65001
cmd > 屬性 > 選項 > 當前代碼頁:65001 UTF-8
再次運行calabash-android:
上面的測試結果提醒:WARNING: You must use ANSICON 1.31 or higher
從 http://adoxa.altervista.org/ansicon/ansi166.zip 下載ansicon並啓動, 一樣要輸入 chcp 65001
再次運行calabash-android:
大功告成!
接下去好人作到底,在桌面上建一個cmd快捷連接,點擊後直接進入UTF-8編碼的ansicon控制檯
確保ansicon.exe放置在Path能找到的目錄下,好比,我放在ruby的bin目錄下:
桌面上建一個cmd快捷連接:
注意,快捷連接的目標:
%windir%\system32\cmd.exe /k chcp 65001&&ansicon
打開該快捷連接後:
calabash-android run ../bin/AndroidDemoProject.apk --format html --out=report.html
算了,不去找緣由了,記住就是了。
因此,創建calabash測試環境的容易程度: Linux > 英文Windows > 中文Windows