歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下構建robotium+jenkins+TMTS可持續集成自動化測試

Linux下構建robotium+jenkins+TMTS可持續集成自動化測試

日期:2017/2/28 14:47:20   编辑:Linux教程

前言
為什麼要在Linux上構建自動化環境呢?
因為在Linux上執行速度要比在Windows快很多,以打包apk為例,至少快一倍。。。
如果公司每個版本要打幾百個apk渠道包,這效率將大幅提升。

軟件安裝
1.安裝jdk
2.安裝tomcat
http://tomcat.apache.org/download-70.cgi
3.安裝ant
http://ant.apache.org/bindownload.cgi
4.安裝jenkins
http://jenkins-ci.org/
下載war包,放於tomcat的webapps目錄下,啟動tomcat將自動部署
5.安裝Android SDK
http://developer.android.com/sdk/index.html
在linux中搭建android開發環境,包括eclipse,ADT等
6.下載TMTS架構中的athena-1.1.jar、ddmlib.jar包
http://code.taobao.org/p/TMTS/src/branches/V1.1/trunk/android/AthrunTest/
當然最好把整個TMTS下載下來

所需軟件是與Windows中一樣的,只不過相應軟件需要用Linux版,且需要注意32位與64位

環境變量、Jenkins配置與Windows上差不多,略

構建任務

與Windows上的區別在於這裡要執行的是shell命令
Build項Add build step中選擇“Execute Shell”

(
cd TmtsApp/tool
ant
adb -s $ANDROID_AVD_DEVICE uninstall com.taobao.tmts.framework.app
adb -s $ANDROID_AVD_DEVICE install apk/TmtsApp.apk
)
根據實際需要cd到相應目錄,卸載apk包、安裝apk包
注意:在對ANDROID_AVD_DEVICE這個參數進行參數構建時,Windows中是用兩個%%即%ANDROID_AVD_DEVICE%,
而Linux中變量則用$表示,即$ANDROID_AVD_DEVICE


再下拉添加一個“Execute Shell”
(
cd TmtsTest\tool
test-packet.bat
adb -s $ANDROID_AVD_DEVICE uninstall com.taobao.tmts.framework.test
adb -s $ANDROID_AVD_DEVICE install apk/TmtsTest.apk
)
根據實際需要cd到相應目錄,卸載測試工程的apk包、安裝測試工程的apk包
再下拉添加一個“Execute Shell”

echo $ANDROID_AVD_DEVICE
cd TmtsTest

rm -rf TEST-*.xml
(
./athena . "TEST-GridViewActivityTest.xml" $ANDROID_AVD_DEVICE com.taobao.tmts.framework.test.GridViewActivityTest
./athena . "TEST-ListViewActivityTest.xml" $ANDROID_AVD_DEVICE com.taobao.tmts.framework.test.ListViewActivityTest
./athena . "TEST-MainActivityTest.xml" $ANDROID_AVD_DEVICE com.taobao.tmts.framework.test.MainActivityTest
)

這裡需要將Windows中的athena.bat修改成Linux中的athena腳本文件並進行執行
athena.bat文件內容:java -cp athena-1.1.jar;ddmlib.jar com.synaptik.athena.Athena %1 %2 %3 %4 E:\\android\\upload
修改為athena文件:java -cp athena-1.1.jar:ddmlib.jar com.synaptik.athena.Athena $1 $2 $3 $4 /usr/upload
robotium中單個用例執行是類似這樣的:
adb shell am instrument -w -e class com.megafon.test.MegafonTest#testDeleteContact com.megafon.test/android.test.InstrumentationTestRunner
運行./athena時調用了athena-1.1.jar和ddmlib.jar,將實現截圖與日志報告功能
這裡如果用的是原來淘寶athena-1.1.jar的話會報錯:
Test class com/taobao/tmts/framework/test/GridViewActivityTest un-match com.cplatform.surfdesktop.test.GridViewActivityTest , continue next...
路徑問題,見本文後面注意。

構建後操作
Post-build Actions勾選“Publish JUnit test result report”,填入TmtsTest/TEST-*.xml
當然jenkins也可以選擇構建後發送郵件,構建後再執行其它任務等

注意:
在Linux中構建ant自動打包用的build.xml文件時,有兩處需要注意
1.運行android相關tool工具的區別,Windows上有exe、bat後綴,而Linux上沒有這些後綴,如果直接使用Windows上原來的build.xml文件
將報找不到aapt.exe命令的錯誤,當然還有可能是aapt不能在64位機器的Linux上運行的原因(本文中的環境就是Ubuntu 64機器),如果你裝的是64位機的話,此時需要安裝32位支持庫。
<condition property="exe" value=".exe" else=""><os family="windows" /></condition>
<condition property="bat" value=".bat" else=""><os family="windows" /></condition>
< property name="aapt" value="${android_platform-tools}/aapt${exe}" />
< property name="aidl" value="${android_platform-tools}/aidl${exe}" />
< property name="dx" value="${android_platform-tools}/dx${bat}" />
< property name="apk-builder" value="${android-tools}/apkbuilder${bat}" />
< property name="proguard-home" value="${android-tools}/proguard/lib"/>

2.Windows上與Linux上路徑的區別
在Windows上路徑分隔符為\,而在Linux上路徑分隔符為/,因此在build.xml文件中涉及路徑的用/吧,因為這樣對Windows上沒影響,但Linux上可能就用不了

在athena-1.1.jar包上程序上獲取測試類時是通過路徑的,如com\cplatformsurfdesktop\test\GridViewActivityTest在athena中會將其中的
\全部轉化為. 即得到com.cplatform.surfdesktop.test.GridViewActivityTest
因此才能得到Test class com.taobao.tmts.framework.test.GridViewActivityTest match com.cplatform.surfdesktop.test.GridViewActivityTest,然後執行用例
因此如果直接用原來的athena-1.1.jar包的話就會出錯了

修改源碼中Athena.java文件
將原來:className = className.replaceAll("\\\\", "\\."); //用於將所有\轉化為.

修改為:className = className.replaceAll("/", "\\."); //用於將所有/轉化為.

修改後重新導出為jar包即可使用

相關閱讀:Windows下構建robotium+jenkins+TMTS可持續集成自動化測試 http://www.idcfree.com/article-275-1.html

Copyright © Linux教程網 All Rights Reserved