http://www.yeetrack.com/?p=578
Robotium 是 Android 应用的自动化测试工具,类似于 Selenium,我们可以通过编写 java 代码来测试 android 程序. maven 是个项目管理工具,可以很方面地对项目进行管理,构建,发布等.利用 maven 构建,可以很方便地放到 hudson,jenkins 等集成环境中.
安装 maven,设置环境变量,不在多说.
安装 android sdk,设置环境变量. 下载 sdk 后,在 Android SDK Manager 中安装 Android SDK Tools,Android SDK Platform-tools(注意最好安装 16.02,不要安装 17,17 版本很多工具找不到,造成 maven-android-plugin 无法使用),android SDK build-tools 和 android 4.2.2(API 17).
安装好 android sdk 后,在 AVD Manager 中新建一个 android 虚拟机,应该可以正常启动了.
下载 Maven Android SDK Deployer 插件,让 maven 支持 android,项目在 github 上,地址,下载后,解压到本地目录.进入其根目录执行
mvn install -P
4.2
(这个版本要和第 2 步中下载的 api 对应,api 17 对应 android 4.2).[INFO] Maven Android SDK Deployer ........................ SUCCESS [0.190s]
[INFO] Android Platforms ................................. SUCCESS [0.000s]
[INFO] Android Platform 4.2 API 17 ....................... SUCCESS [1.983s]
[INFO] Android Add-Ons ................................... SUCCESS [0.030s]
[INFO] Android Add-On Google Platform 4.2 API 17 (Maps and USB) SUCCESS [0]
[INFO] Android Extras .................................... SUCCESS [0.010s]
如果报错,应该是 android sdk 中的包没有下全,不过,我们只需要
Android Platform 4.2 API 17
这个成功即可.
首先利用 maven 命令行创建一个 android-quickstart-archetype,命令如下:
mvn archetype:generate -DarchetypeArtifactId=android-quickstart -DarchetypeGroupId=de.akquinet.android.archetypes -DarchetypeVersion=1.0.8 -DgroupId=com.yeetrack -DartifactId=androidTest
将此项目 import 到 eclipse 或者 idea 中,修改项目的 pom.xml 文件
<?xml version="1.0" encoding="UTF-8" ?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>
4.0.0
</modelVersion>
<groupId>
com.yeetrack
</groupId>
<artifactId>
mavenAndroid
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<packaging>
apk
</packaging>
<name>
mavenAndroid
</name>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<platform.version>
4.0.1.2
</platform.version>
<sdk.dir>
D:\work\android-sdk-windows
</sdk.dir>
</properties>
<dependencies>
<!-- <dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<version>${platform.version}</version>
<scope>provided</scope>
</dependency>-->
<dependency>
<groupId>
com.jayway.android.robotium
</groupId>
<artifactId>
robotium-solo
</artifactId>
<version>
4.1
</version>
</dependency>
<!--在maven仓库中没有找到android.jar,所以使用本地的jar包-->
<dependency>
<groupId>
com.google
</groupId>
<artifactId>
android
</artifactId>
<version>
1.0
</version>
<scope>
system
</scope>
<systemPath>
${project.basedir}/libs/android.jar
</systemPath>
</dependency>
<dependency>
<groupId>
emma
</groupId>
<artifactId>
emma
</artifactId>
<version>
2.1.5320
</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
com.jayway.maven.plugins.android.generation2
</groupId>
<artifactId>
android-maven-plugin
</artifactId>
<version>
3.1.1
</version>
<configuration>
<encoding>
UTF-8
</encoding>
<androidManifestFile>
${project.basedir}/AndroidManifest.xml
</androidManifestFile>
<assetsDirectory>
${project.basedir}/assets
</assetsDirectory>
<resourceDirectory>
${project.basedir}/res
</resourceDirectory>
<nativeLibrariesDirectory>
${project.basedir}/src/main/native
</nativeLibrariesDirectory>
<sdk>
<path>
${sdk.dir}
</path>
<platform>
17
</platform>
</sdk>
<undeployBeforeDeploy>
true
</undeployBeforeDeploy>
</configuration>
<extensions>
true
</extensions>
</plugin>
<plugin>
<artifactId>
maven-compiler-plugin
</artifactId>
<version>
2.3.2
</version>
<configuration>
<encoding>
UTF-8
</encoding>
<source>
1.6
</source>
<target>
1.6
</target>
</configuration>
</plugin>
</plugins>
</build>
修改项目的 AndroidManifest.xml 文件, 我的项目 AndroidManifest.xml 文件如下:
<?xml version="1.0" encoding="utf-8" ?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.yeetrack.mavenAndroid"
android:versionCode="1" android:versionName="1.0-SNAPSHOT">
<!--指定要测试的软件包-->
<instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.yeetrack.androidapp" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<uses-library android:name="android.test.runner" />
</application>
写完测试代码后,直接
mvn clean install
即可.既然 maven 跑通了,利用 jenkins,hudson 自动化构建 robotium case 都可以很简单地实现,不再叙述.
[INFO] android.device parameter not set,
using all attached devices[INFO] Successfully installed C: \oa - robotium\target\mavenAndroid - 1.0 - SNAPSHOT.apk to emulator - 5554_android - 4.2.2_unknown_sdk[INFO][INFO]---android - maven - plugin: 3.1.1 : internal - integration - test(
default - internal - integration - test)@mavenAndroid---[INFO] Found 1 devices connected with the Android Debug Bridge[INFO] android.device parameter not set,
using all attached devices[INFO] Running instrumentation tests in com.yeetrack.mavenAndroid on emulator - 5554(avdName = android - 4.2.2)[INFO] Run started: com.yeetrack.mavenAndroid,
2 tests: [INFO] Start: com.yeetrack.oa.robotium.test.BusInfoTest#testBus[INFO] End: com.yeetrack.oa.robotium.test.BusInfoTest#testBus[INFO] Start: com.yeetrack.oa.robotium.test.LoginTest#testLogin[INFO] End: com.yeetrack.oa.robotium.test.LoginTest#testLogin[INFO] Run ended: 36197 ms[INFO] Tests run: 2,
Failures: 0,
Errors: 0[INFO] Report file written to C: \oa - robotium\target\surefire - reports\TEST - emulator - 5554_android - 4.2.2_unknown_sdk.xml[INFO][INFO]---maven - install - plugin: 2.4 : install(
default - install)@mavenAndroid---[INFO] Installing C: \oa - robotium\target\mavenAndroid - 1.0 - SNAPSHOT.apk to C: \Users\youthflies\.m2\repository\com\yeetrack\mavenAndroid\1.0 - SNAPSHOT\mavenAndroid - 1.0 - SNAPSHOT.apk[INFO] Installing C: \oa - robotium\pom.xml to C: \Users\youthflies\.m2\repository\com\yeetrack\mavenAndroid\1.0 - SNAPSHOT\mavenAndroid - 1.0 - SNAPSHOT.pom[INFO] Installing C: \oa - robotium\target\mavenAndroid - 1.0 - SNAPSHOT.jar to C: \Users\youthflies\.m2\repository\com\yeetrack\mavenAndroid\1.0 - SNAPSHOT\mavenAndroid - 1.0 - SNAPSHOT.jar[INFO]------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO]------------------------------------------------------------------------[INFO] Total time: 1 : 45.668s[INFO] Finished at: Sat May 25 15 : 01 : 19 CST 2013[INFO] Final Memory: 17M / 223M[INFO]---------------------------------------------
来源: http://lib.csdn.net/article/softwaretest/36508