用robotium测试Android apk文件
用robotium测试android apk文件需要以下前题:
*下载apk,网址如下:
http://robotium.googlecode.com/files/AndroidCalculator.apk
*用Eclipse创建测试用的project;
1、安装AUT (Application Under Test) APK
APK文件可以安装在手机设备或模拟器上,但需要确保APK已经在调试模式下获得签名了。
如果APK文件已经获得了签名,可以跳过接来的这一步;
(1) 在调试模式下对APK进行签名
APK文件必须拥有与你的test project同样的签名证书,证书可以确定android应用的作者。
标准的工具比如Keytool和Jarsigner可以用于对密钥的生成和对应用的签名。
希望得到更多的帮助可以访问:http://developer.android.com/guide/publishing/app-signing.html
(2) 重要步骤
如果应用已经获得了签名,可以从如下网站上下载java程序:http://www.troido.de/re-sign.jar
使用方法:双击文件打开它,将apk文件拖入即可。
或者
*解压apk文件
*删除META-¬INF文件夹
*重新压缩apk文件
*在Dos prompt/Terminal下输入如下命令
> arsigner -keystore ~/.android/debug.keystore -storepass android -keypass android ApplicationToTest.apk androiddebugkey
> zipalign 4 ApplicationToTest.apk TempApplicationToTest.apk
将TempApplicationToTest.apk重命名为ApplicationToTest.apk.如果这是一个未签名的应用,那么,在Dos prompt/Terminal输入如下命令
> jarsigner -keystore ~/.android/debug.keystore -storepass android -keypass android ApplicationToTest.apk androiddebugkey
> zipalign 4 ApplicationToTest.apk TempApplicationToTest.apk
然后将TempApplicationToTest.apk重命名为ApplicationToTest.apk
2、创建Test Project
建好工程后右击包名,选择“class”创建一个新的类;输入如下代码:
package com.calculator.test;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
@SuppressWarnings("unchecked")
public class TestApk extends ActivityInstrumentationTestCase2{
private static final String TARGET_PACKAGE_ID="com.calculator";
private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME="com.calculator.Main";
private static Class launcherActivityClass;
static{
try
{
launcherActivityClass=Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); } catch (ClassNotFoundException e)
{
throw new RuntimeException(e); } }
public TestApk()throws ClassNotFoundException{
super(TARGET_PACKAGE_ID,launcherActivityClass); }
private Solo solo;
@Override
protected void setUp() throws Exception
{
solo = new Solo(getInstrumentation(),getActivity()); }
public void testDisplayBlackBox() {
//Enter any integer/decimal value for first editfield, we are writing 10
solo.enterText(0, "10");
//Enter any interger/decimal value for first editfield, we are writing 20
solo.enterText(1, "20");
//Click on Multiply button
solo.clickOnButton("Multiply");
//Verify that resultant of 10 x 20
assertTrue(solo.searchText("200")); }
@Override
public void tearDown() throws Exception {
solo.finishOpenedActivities();
}
}
3、导入robotium jar
4、改变AndroidManifest.xml
<?xml version="1.0"encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.calculator.test"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="14"/>
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.calculator"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<uses-library android:name="android.test.runner"/>
</application>
</manifest>
本文本应该同前面的两篇同时贴上来的,哎。最后,建议大家有兴趣较为深入学习robotium的,去访问官网,直接阅读英文文档,掌握最新的一手资料。