Windows下Android项目搭建Jenkins持续构建+自动化测试

使用持续集成和自动化测试的好处就不说了,网上一搜一大把,不太了解的可以去Google search。下面开始介绍如何在Windows环境下为Android项目搭建Jenkins。本文中使用的版本管理工具是SVN,大部分内容都参考自Jenkins官网,而且本文不考虑SDK Tools 14以下的情况。

<wbr></wbr>

安装Jenkins +建立项目

1,<wbr></wbr>打开http://jenkins-ci.org/,下载jenkins.war

2,<wbr></wbr>Jenkins的安装非常简单,可以直接在命令行中使用java –jar jenkins.war运行,也可以将jenkins.war放在tomcat中去执行。

3,<wbr></wbr>打开Jenkins的系统管理>系统设置:

a)<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>jdk中填入jdk安装地址。

b)<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>ant中填入ant安装地址。

c)<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>在最下面的邮件通知中设置邮箱的smtp地址等信息。设置完成后可以测试是否设置成功。

4,<wbr></wbr>打开系统管理>插件管理>可选插件,安装如下插件:

a)<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>ant

b)<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>Android Emulator Plugin

c)<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>Jenkins Emma plugin

d)<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>FindBugs Plug-in

5,<wbr></wbr>Eclipse中新建一个Android项目以及测试项目,假设你的项目目录结构如下所示:

/workspace/android-app

/workspace/android-test

安装Apache Ant

1.<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>Eclipse workspace下为Android app项目添加ant,执行:

android update project -p android-app

2.<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>为测试项目添加ant,执行:

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

3.<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>现在app项目中生成了local.properties文件,这个文件应该在版本控制工具中设置为忽略;在test项目中现在生成了ant.propertieslocal.properties两个文件,这两个文件必须要加入版本控制工具中(SVN)。

4.<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>在命令行中执行下面的代码看看ant是不是成功运行了:

ant clean debug

5.<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>开启一个Android模拟器,然后在test工程下执行下面的代码看看测试工程是否可以成功运行:

ant all clean emma debug install test

6.<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>如果成功的话会在测试工程下生成coverage目录,内含一个名为coverage.html的文件,里面是测试用例的覆盖率等数据。

<wbr></wbr>

安装Emma

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>Emma</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>用于在Jenkins中生成出Ant执行的测试用例的报表,上面我们测试后生成的是html格式的,但是要想在jenkins中生成图形等,则必须生成出xml格式的文件。

1,<wbr></wbr>打开SDK安装目录,打开tools/ant/build.xml,复制其中名为coveragetarget到你的测试项目中的build.xml文件中。

2,<wbr></wbr><html outfile="coverage.html" />节点替换成:

<html outfile="coverage.html" />

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

3,<wbr></wbr><ehco>节点替换成:

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

4,<wbr></wbr>再次运行:ant all clean emma debug install test命令后,在coverage文件夹中多了一个coverage.xml文件的话则成功。

<wbr></wbr>

安装FindBugs

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>FindBugs</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>用来找到你的项目中的bug,目前我还没有使用到它。不过Jenkins官方文档中的步骤将它配置了,所以我们也来做它的配置。

1,<wbr></wbr>下载FindBugs,将其中lib/findbugs-ant.jar拷贝到Ant安装目录下的lib文件夹中。

2,<wbr></wbr>app工程文件夹下的local.properties文件中加入findbugs.home=**其中**为你的findbugs的安装目录。

3,<wbr></wbr>如果你需要在R.java中查找bug的话则需要在app工程目录下添加一个名为findbugs-exclude.xml的文件,在其中写入下面的代码。

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

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;FindBugsFilter&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;Match&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;Class name="~.*\.R\$.*"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;Bug code="Nm"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;/Match&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;/FindBugsFilter&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

4,<wbr></wbr>app工程目录下的build文件中加入下面的代码。

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

<target name="findbugs">

<mkdir dir="reports" />

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;findbugs home="${findbugs.home}" output="xml" outputFile="reports/findbugs.xml" excludeFilter="findbugs-exclude.xml"&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;auxClasspath path="${android.jar}" /&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;class location="${out.dir}" /&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

</findbugs>

</target>

5,<wbr></wbr>执行ant clean compile findbugs后在app工程目录下生成一个名为reports的文件夹,里面包含了一个名为findbugs.xml的文件。

<wbr></wbr>

配置jenkins

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>Jenkins</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>环境修改:

1,<wbr></wbr>下载android-junit-report-1.2.6.jar(可以下载更新的版本),将它加入test工程的build path中。

2,<wbr></wbr>修改test projectAndroidManifest.xml,找到tag "instrumentation"将属性"android:name"的值改成com.zutubi.android.junitreport.JUnitReportTestRunner

3,<wbr></wbr>打开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,<wbr></wbr>找到其中名为test.runnerproperty节点,将它的值改为:com.zutubi.android.junitreport.JUnitReportTestRunner

<wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>配置App工程:

1,<wbr></wbr>添加一个自由风格任务,选择subversion,将app项目的svn地址填入(第一次使用的时候会要求提供svn账户密码)。

2,<wbr></wbr>添加一个Invoke Ant构建步骤,在其中的Targets填入clean compile findbugs

3,<wbr></wbr>在高级选项中的properties填入下面内容(注意填自己的安装信息):sdk.dir=D:\\WORK\\ENVIROMENT\\ANDROID\\AndroidSDK

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

4,<wbr></wbr>构建后选项选择:Publish FindBugs analysis results,然后填入:reports/findbugs.xml

5,<wbr></wbr>选择Archive the artifacts,这样可以在每次构建后提供构建出来的apk版本。

6,<wbr></wbr>勾选E-mail Notification选项,在下面的recipients中填入需要接收构建异常信息的联系人邮件地址。勾选“每次不稳定的构建都发送邮件通知”选项。

配置test工程:

1,<wbr></wbr>添加自由风格任务,选择subversion,将test项目的svn地址填入。

2,<wbr></wbr>Invoke Anttarget中填入:all clean emma debug install test

3,<wbr></wbr>build file中填入build.xml

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

5,<wbr></wbr>勾选Publish JUnit test result report,填入:junit-report.xml

6,<wbr></wbr>勾选Record Emma coverage report,填入:coverage/coverage.xml

7,<wbr></wbr>勾选E-mail Notification,如app工程配置。

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


http://blog.sina.com.cn/s/blog_6324a89501013h84.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值