1. 程式人生 > >Jenkins+Ant+Android+Robitium 例項詳解(打包app,執行Robotium測試,生成測試結果)

Jenkins+Ant+Android+Robitium 例項詳解(打包app,執行Robotium測試,生成測試結果)

Jenkins Ant 打包android app,構建Robotium測試,執行Robotium測試,生成測試結果 例項詳解

前言:       眾所周知,Jenkins提供了強大持續整合功能,本文主要是使用Jenkins 整合Ant構建、打包Android工程,並執行基於Robotium的Android自動化測試。本例實現了從打包android工程到生成Junit的報告的整個過程。
       當然,關於Jenkins+Ant+Android+Robitium應該還有其他方式,所以本文僅提供一種方法,供大家學習參考。

可能產生的疑問:
(1) 用的Android 裝置是什麼?

     本例可以直接執行在已經連線到PC上android手機(必須有root許可權)或者已經開啟的android 模擬器。這種方案的好處是你直接可以看到測試執行結果。


(2)能否用Jenkins的Android Emulator Plugin外掛? 
    當然可以用Android Emulator Plugin外掛。一種是利用已有的 模擬器(Run existing emulator);另一種是 執行jenkins job會新建Android模擬器(Run emulator with properties)。具體不在這裡詳解,因為比較簡單。

正文:

說明:
android project 名稱: cheersApp
android test project 名稱: cheersAppTest1
其他說明:本文很多路徑是絕對路徑,大家可以改成相對路徑

 建立JenkinsJob

1. 建立自由風格的job 名稱:android_jenkins_test1

Source Code Mananagement 選擇subversion


說明:svn 取兩個project,cheersApp是 android專案的原始碼,cheersAppTest1是測試的project。

2. Buid 設定部分
<1> Execute Windows batch command (1)
Command:

cd D:\Program Files (x86)\Jenkins\jobs\android_jenkins_test1\workspace\cheersApp
d:
android update project -p . -n cheersApp -t android-19
說明:
build android工程,使用命令:android update project -p . -n cheersApp -t android-19

<2> Execute Windows batch command (2)
Command:
cd D:\Program Files (x86)\Jenkins\jobs\android_jenkins_test1\workspace\cheersApp
d:
ant debug

說明:
用 ant 打包生成 debug的android APP:cheersApp-debug.apk

<3> Install Android package 設定見圖


<4> Execute Windows batch command(3)
Command:
cd D:\Program Files (x86)\Jenkins\jobs\android_jenkins_test1\workspace\cheersAppTest1
d:
android update test-project -m "D:\Program Files (x86)\Jenkins\jobs\android_jenkins_test1\workspace\cheersApp" -p "D:\Program Files (x86)\Jenkins\jobs\android_jenkins_test1\workspace\cheersAppTest1"
說明:

build android test工程,使用命令:android update test-project -m android工程目錄 -p 測試工程目錄

注意,這兩個目錄需要寫正確。

<5 >Execute Windows batch command(4)
Command:java -jar "D:\Program Files (x86)\Jenkins\jobs\android_jenkins_test1\workspace\cheersAppTest1\update_ant_properties.jar" "D:\Program Files (x86)\Jenkins\jobs\android_jenkins_test1\workspace\cheersAppTest1\ant.properties"
說明:

(1) Execute Windows batch command(3) 構建完android test 的工程後,會在目錄裡邊生成 ant.properties,build.xml, local.properties 檔案;
(2) 由於 這裡使用了“android junit report”這個jar包(將robotium的測試結果“junit-report.xml”檔案會放在測試裝置的“/data/data/com.cheers/files/junit-report.xml”),見 http://zutubi.com/source/projects/android-junit-report/  
(3) 由於“android junit report”需要 在生成的 ant.properties 檔案中,加入一行:“test.runner=com.zutubi.android.junitreport.JUnitReportTestRunner” 
所以,這個呼叫這個 update_ant_properties.jar  是往,ant.properties 檔案中,加入一行:“test.runner=com.zutubi.android.junitreport.JUnitReportTestRunner” 
這個可執行的jar原始碼如下:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class UpdateAntProperties {
	public static void main(String[] args)
	{
//		String sFilePath="D:\\Program Files (x86)\\Jenkins\\jobs\\android_jenkins_test1\\workspace\\cheersAppTest1\\ant.properties";
		String sFilePath=args[0];
		String sAddLineString="test.runner=com.zutubi.android.junitreport.JUnitReportTestRunner";
		try{
			File file=new File(sFilePath);
			BufferedWriter out=new BufferedWriter(new FileWriter(file,true));
			out.append("\r\n"+sAddLineString);
			out.flush();
			out.close();	
		}catch(IOException e)
		{
			System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Update ant.properties failed, please check! ");
			e.printStackTrace();
		}	
	}
}

<6> Execute Windows batch command(5)
Command:
cd D:\Program Files (x86)\Jenkins\jobs\android_jenkins_test1\workspace\cheersAppTest1
d:
ant clean debug install test
說明:

通過ant 執行robotium的自動化測試,測試結果放在裝置:/data/data/com.cheers/files/junit-report.xml

<7> Execute Windows batch command(6)
Command:
adb pull /data/data/com.cheers/files/junit-report.xml "D:\Program Files (x86)\Jenkins\jobs\android_jenkins_test1\workspace\cheersAppTest1\junit-report.xml"
說明:

通過adb pull 命令將測試android junit結果 /data/data/com.cheers/files/junit-report.xml 放到 D:\Program Files (x86)\Jenkins\jobs\android_jenkins_test1\workspace\cheersAppTest1\junit-report.xml


3. Post-build Actions 設定


說明:

通過Jenkins的JUnit Plugin解析結果檔案 D:\Program Files (x86)\Jenkins\jobs\android_jenkins_test1\workspace\cheersAppTest1\junit-report.xml 生成測試結果
注意,Tesp report XMLs這裡一定要寫相對路徑,如: cheersAppTest1/junit-report.xml如果寫絕對路徑會報錯  
測試結果效果,如下圖:



至此 Job建立完成,執行Jenkins 的job。

寫博文實在是太辛苦了,轉載請註明轉載地址,多謝~!

相關推薦

Jenkins+Ant+Android+Robitium 例項打包app執行Robotium測試生成測試結果

Jenkins Ant 打包android app,構建Robotium測試,執行Robotium測試,生成測試結果 例項詳解 前言:       眾所周知,Jenkins提供了強大持續整合功能,本文主要是使用Jenkins 整合Ant構建、打包Android工程,並執行基

ant的build.xml構建自動化打包android apk 完全打包系列教程之二

打包系列教程目錄: 通過上一篇文章內容的學習,我們基本已經明白了android打包簽名apk的主要操作與流程,那麼這一篇文章我們就將上一篇文章的打包內容轉化成ant的build.xml檔案進行自動化打包,這樣可以避免我們上一篇文章的敲打命令列的繁瑣操作,從而

Android開發例項之IMF(輸入法)Android SDK Sample—SoftKeyboard

      本博前面的文章介紹了開發環境的搭建和模擬器的常用操作。本次,將以Android Sample中經典的SoftKeyboard專案為例,詳細解析Android上一個小型專案的開發過程和注意事項。   從SDK 1.5版本以後,Android就開放它的IMF(

Android Paging library

重要API及原始碼分析 文章目錄 1.重要API介紹 1.1 DataSource 1.2 PageList 1.3 PagedListAdapter 2.原始碼解析 1.重要API介紹 Pagin

Android Paging library

官方文件翻譯 文章目錄 1.概覽 1.1 庫架構 1.2 支援不同的資料架構 1.2.1 網路獲取或者資料庫 1.2.2 網路和資料庫同時獲取 1.2.3 處理網路錯誤 1.2.4 更新

Android View座標系getTop()、getX、getTranslationX...

View 提供瞭如下 5 種方法獲取 View 的座標: 1. View.getTop()、View.getLeft()、View.getBottom()、View.getRight();//相對父容器 2. View.getX()、View.getY();//getX()=

Android中ImageSwitcher注意與圖片瀏覽器的區別

先看看繼承關係,ImageSwitcher和TextSwitcher的繼承關係是一樣的。兩個重要的父類:ViewSwitcher和ViewAnimator 繼承於ViewSwitcher,說明具備了切換功能 繼承於ViewAnimator,說明具備了動畫功能 Image

android json解析json手動解析

一 .json簡介 1)概念:json全稱是javaScript object Notation,是一種病輕量級的資料交換格式。 2)特點: 1.本質就是具有特定格式的字串 2,.json完全獨立於程式語言 3.json比xml資料傳輸的有效性要高出很多 二。json資料

C++ pair的用法例項結構體模板應用初探

1 pair的應用(結構體模板)pair是將2個數據組合成一個數據,當需要這樣的需求時就可以使用pair,如stl中的map就是將key和value放在一起來儲存。另一個應用是,當一個函式需要返回2個數據的時候,可以選擇pair。標頭檔案:#include<utilit

[Android]ToolBar使用——專案配置

private Toolbar mToolbar; private WebFragment mWebFragment; private long mBeforeTime; @Override protected void onCreate(Bundle savedInst

Linux常用命令例項N

N netstat 顯示網路有關的資訊,比如套介面使用情況、路由、介面、協議(TCP等)等 檢視TCP連線的命令是什麼? 正確答案: C 你的答案: A (錯誤) tcpdump top netstat ifconfig O P

SpringBoot 入門教程例項 開發第一個SpringBoot應用程式例項

構建你的第一個Spring Boot應用程式 更多精彩請閱讀 東陸之滇的csdn部落格:http://blog.csdn.net/zixiao217 此教程提供一個入門應用程式例子,來展示Spring Boot是如何幫助快速、敏捷開發新一代應用的。你還可以通

android.hardware.camera2實時更新,未完待續...)

看到有些讀者對部落格提出的疑問,在此真誠說一句實在抱歉,本人是一名在校非科班出身大學生,之前 由於是期末季,所以非常忙,沒有空更新,一月二十幾號才放假,非常抱歉,評論所訴內容應該都已解決,只是我沒有更新,近期將會更新!再次致歉! 前言:原有的androi

Android.mk用法

       Android.mk是Android提供的一個makefile檔案,可以將原始檔分組為模組。用來引用的標頭檔案目錄、需要編譯的*.c/*.cpp檔案、jni原始檔、指定編譯生成*.so共享庫檔案或者*.a靜態庫檔案,可以定義一個或多個模組,也可以多個模組中使用同

openstack nova呼叫libvirt跟蹤libvirt原始碼例項cpu_mode及live_migrate 錯誤解決

2014-11-12 22:22:38.432 21166 ERROR oslo.messaging._drivers.common [-] ['Traceback (most recent call last):\n', ' File "/usr/lib/python2.6/site-packages/os

Android sqlite應用轉自大牛SCOTT)

上次我向大家介紹了SQLite的基本資訊和使用過程,相信朋友們對SQLite已經有所瞭解了,那今天呢,我就和大家分享一下在Android中如何使用SQLite。 現在的主流移動裝置像Android、iPhone等都使用SQLite作為複雜資料的儲存引擎,在我們為移動裝置開發

事件驅動模型例項Java篇

這個按鈕的時候,按鈕物件會直接把這次點選感覺傳遞給ButtonEventHandler的actionPerformed方法處理,為養成較好的程式設計習慣,我們中心並不建議學員直接在該委託方法中編寫程式碼,而是需要將該事件處理再次轉發給窗體中的某個方法來處理,這個方法的命名也必須是有規則的,就是事件源名+下劃線

Android編譯系統

++++++++++++++++++++++++++++++++++++++++++ 本文系本站原創,歡迎轉載! 轉載請註明出處: ++++++++++++++++++++++++++++++++++++++++++ Android的優勢就在於其開源,手機和平板

Java eclipse下 Ant build.xml例項 附完整專案原始碼

在有eclipse整合環境下ant其實不是很重要,但有些專案需要用到,另外通過eclipse來學習和理解ant是個很好的途徑,所以寫他demo總結下要點,希望能夠幫到大家。 一、本人測試環境eclipse3.6已自動集成了ant環境, 所以就不用單獨下載配置ant環境了

Android音訊焦點

2017年開年第一篇部落格,很早就想總結一下Android音訊的相關知識。 今天我們先來看一下音訊焦點的相關內容,分為上下篇,上篇主要介紹音訊焦點在媒體類應用中的使用,下篇進行原始碼分析,我們學習原始碼不僅僅是為了更深入的瞭解,更主要的目的是學習And