天天看點

Windows下Android項目搭建Jenkins持續建構+自動化測試

安裝jenkins + 建立項目

1,  打開http://jenkins-ci.org/, 下載下傳jenkins.war。

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.properties和local.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,複制其中名為coverage的target到你的測試項目中的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 project的androidmanifest.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.runner的property節點,将它的值改為: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 ant的target中填入: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工程配置。

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

繼續閱讀