1. 程式人生 > >Windows下Android專案搭建Jenkins持續構建+自動化測試

Windows下Android專案搭建Jenkins持續構建+自動化測試

使用持續整合和自動化測試的好處就不說了,網上一搜一大把,不太瞭解的可以去Google search。下面開始介紹如何在Windows環境下為Android專案搭建Jenkins。本文中使用的版本管理工具是SVN,大部分內容都參考自Jenkins官網,而且本文不考慮SDK Tools 14以下的情況。

安裝Jenkins + 建立專案

2, Jenkins的安裝非常簡單,可以直接在命令列中使用java –jar jenkins.war執行,也可以將jenkins.war放在tomcat中去執行。

3, 開啟Jenkins的系統管理>系統設定:

a) jdk中填入jdk安裝地址。

b) ant中填入ant安裝地址。

c) 在最下面的郵件通知中設定郵箱的smtp地址等資訊。設定完成後可以測試是否設定成功。

4, 開啟系統管理>外掛管理>可選外掛,安裝如下外掛:

a) ant

b) Android Emulator Plugin

c) Jenkins Emma plugin

d) FindBugs Plug-in

5, Eclipse中新建一個Android專案以及測試專案,假設你的專案目錄結構如下所示:

/workspace/android-app

/workspace/android-test

安裝Apache Ant

1. 

Eclipse workspace下為Android app專案新增ant,執行:

android update project -p android-app

2. 為測試專案新增ant,執行:

android update test-project -m ../android-app -p android-test

3. 現在app專案中生成了local.properties檔案,這個檔案應該在版本控制工具中設定為忽略;在test專案中現在生成了ant.propertieslocal.properties兩個檔案,這兩個檔案必須要加入版本控制工具中(SVN)。

4. 在命令列中執行下面的程式碼看看

ant是不是成功運行了:

ant clean debug

5. 開啟一個Android模擬器,然後在test工程下執行下面的程式碼看看測試工程是否可以成功執行:

ant all clean emma debug install test

6. 如果成功的話會在測試工程下生成coverage目錄,內含一個名為coverage.html的檔案,裡面是測試用例的覆蓋率等資料。

安裝Emma

         Emma用於在Jenkins中生成出Ant執行的測試用例的報表,上面我們測試後生成的是html格式的,但是要想在jenkins中生成圖形等,則必須生成出xml格式的檔案。

1, 開啟SDK安裝目錄,開啟tools/ant/build.xml,複製其中名為coveragetarget到你的測試專案中的build.xml檔案中。

2, <html outfile="coverage.html" />節點替換成:

<html outfile="coverage.html" />

<xml outfile="coverage/coverage.xml" />

3, <ehco>節點替換成:

<echo>Saving the report file in ${basedir}/coverage/coverage.xml</echo>

4, 再次執行:ant all clean emma debug install test命令後,在coverage資料夾中多了一個coverage.xml 檔案的話則成功。

安裝FindBugs

         FindBugs用來找到你的專案中的bug,目前我還沒有使用到它。不過Jenkins官方文件中的步驟將它配置了,所以我們也來做它的配置。

1, 下載FindBugs,將其中lib/findbugs-ant.jar 拷貝到Ant安裝目錄下的lib資料夾中。

2, app工程資料夾下的local.properties檔案中加入findbugs.home=** 其中**為你的findbugs的安裝目錄。

3, 如果你需要在R.java中查詢bug的話則需要在app工程目錄下新增一個名為findbugs-exclude.xml的檔案,在其中寫入下面的程式碼。

 <?xml version="1.0" encoding="UTF-8"?>

                    <FindBugsFilter>

                                        <Match>

                                                            <Class name="~.*\.R\$.*"/>

                                                            <Bug code="Nm"/>

                                        </Match>

                    </FindBugsFilter>

4, app工程目錄下的build檔案中加入下面的程式碼。

<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"/>

<target name="findbugs">

<mkdir dir="reports" />

         <findbugs home="${findbugs.home}" output="xml" outputFile="reports/findbugs.xml" excludeFilter="findbugs-exclude.xml">

           <auxClasspath path="${android.jar}" />

           <class location="${out.dir}" />

</findbugs>

</target>

5, 執行ant clean compile findbugs 後在app工程目錄下生成一個名為reports的資料夾,裡面包含了一個名為findbugs.xml的檔案。

配置jenkins

         Jenkins環境修改:

1, 下載android-junit-report-1.2.6.jar(可以下載更新的版本),將它加入test工程的build path中。

2, 修改test projectAndroidManifest.xml,找到tag "instrumentation" 將屬性"android:name"的值改成 com.zutubi.android.junitreport.JUnitReportTestRunner

3, 開啟test工程下的build.xml,在</run-test-helper>節點後加入下面的程式碼:<echo>Downloading XML test report...</echo>

<exec executable="${adb}" fail>

<arg line="${adb.device.arg}"/>

<arg value="pull" />

<arg value="/data/data/${tested.manifest.package}/files/junit-report.xml" />

<arg value="junit-report.xml" />

</exec>

4, 找到其中名為test.runnerproperty節點,將它的值改為:com.zutubi.android.junitreport.JUnitReportTestRunner

 配置App工程:

1, 新增一個自由風格任務,選擇subversion,將app專案的svn地址填入(第一次使用的時候會要求提供svn賬戶密碼)。

2, 新增一個Invoke Ant構建步驟,在其中的Targets填入clean compile findbugs

3, 在高階選項中的properties填入下面內容(注意填自己的安裝資訊):sdk.dir=D:\\WORK\\ENVIROMENT\\ANDROID\\AndroidSDK

findbugs.home=D:\\WORK\\ENVIROMENT\\FingBugs\\ findbugs-2.0.0

4, 構建後選項選擇:Publish FindBugs analysis results,然後填入:reports/findbugs.xml

5, 選擇Archive the artifacts,這樣可以在每次構建後提供構建出來的apk版本。

6, 勾選E-mail Notification選項,在下面的recipients中填入需要接收構建異常資訊的聯絡人郵件地址。勾選“每次不穩定的構建都發送郵件通知”選項。

配置test工程:

1, 新增自由風格任務,選擇subversion,將test專案的svn地址填入。

2, Invoke Anttarget中填入:all clean emma debug install test

3, build file中填入build.xml

4, properties中填入sdk.dir=D:\\WORK\\ENVIROMENT\\ANDROID\\AndroidSDK

5, 勾選Publish JUnit test result report,填入:junit-report.xml

6, 勾選Record Emma coverage report,填入:coverage/coverage.xml

7, 勾選E-mail Notification,如app工程配置。

所有配置工作到此結束,現在可以去跑了。