Android Robotium测试单个的APK方法

来源:互联网 发布:哪个旅行团比较好知乎 编辑:程序博客网 时间:2024/05/21 17:32
 

Robotium 在只有APK应用方法讲解

一:Android Robotium测试的环境

Requirements:

1. Android application apk file. Ex: APItoTest.apk. (Package name: com.Ex.APItoTest)

2. Eclipse (eclipse IDE for java EE Developers).

3. ADT (Android Development Tools)

4. SDK (Android SDK)

5. JDK

6. Robotium

二:测试步骤:

步骤一: 在Eclipse 中新建Android Test Project (在Eclipse 中添加Android SDK 请参考

<Android 开发环境搭建.docx>)

File > New > Project > Android > Android Test Project

在New Android Test Project 中填入下面的相应信息后"Finish".

Test Project Name: ExAPITest

Test Target: "This Project"

Build Target: 根据APK 测试需要选择

Application name: ExAPITest

Package name: com. Ex.APITest

 

步骤二: 在新建的Test Project中修改AndroidManifest.xml,

instrumentation android:targetPackage="com.Ex.APITest"

instrumentation android:targetPackage="com.Ex.APItoTest"

【注意】如果不知道APK 的Pckage name 可以按照下面的方法来获取:

1. 打开Android 模拟器

2. 在CMD 中使用adb instal 命令在模拟器上安装APK

3. 使用adb logcat 命令查看APK 的Package name

或者:在platform-tools目录下使用如下命令:aapt dump badging XXX.apk

 

步骤三: 在src 中右键com.Ex.APITest,新建一个Class

Class Name: APITest

将下面的代码Copy 到新建的Class APITest.java 中

—————————————————————————————————————————

package com.Ex.APITest;

import com.jayway.android.robotium.solo.Solo;

import android.test.ActivityInstrumentationTestCase2;

@SuppressWarnings({ "unchecked", "rawtypes" })

public class Wallpapertest extends ActivityInstrumentationTestCase2 {

public Wallpapertest(Class activityClass) {

super(activityClass);

// TODO Auto-generated constructor stub

}

private static final String TARGET_PACKAGE_ID = "com.Ex.APItoTest";

private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME =

"com.Ex.APItoTest.MainActivity";

private static Class<?> launcherActivityClass;

static {

try {

launcherActivityClass =

Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);

} catch (ClassNotFoundException e) {

throw new RuntimeException(e);

}

}

public Wallpapertest() throws ClassNotFoundException{

super(TARGET_PACKAGE_ID, launcherActivityClass);

}

private Solo solo;

@Override

protected void setUp() throws Exception {

solo = new Solo(getInstrumentation(), getActivity());

}

@Override

public void tearDown() throws Exception {

try

{solo.finalize();

} catch(Throwable e) {

e.printStackTrace();

}

getActivity().finish();

super.tearDown();

}

#前面的部分是必要的框架,下面就可以开始编写Test Scripts 了

#testCase1 前面的test 一定要用小写

public void testCase1(){

}

public void testCase2(){

}

}

—————————————————————————————————————————

* Note

Private static final String TARGET_PACKAGE_ID = "com.Ex.APItoTest";

Private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME =

"com.Ex.APItoTest.MainActivity";

com. Ex.APItoTest 是package name, MainActivity 是launcher name

LAUNCHER_ACTIVITY_FULL_CLASSNAME = package name.launcher name

 

步骤四: 代码搞定后就可以导入Robotium.jar了,右键"ExAPITest" folder > Build Path >

Configure Build Path...

在Libraries 中, Add External JARs > 选择robotium jar file > Open > OK

 

步骤五: 使用robotium做JUnit test需要和APK文件使用相同的签名, 只有APK文件时我们可以用下面的方法来重新签名

1. 将APK 文件的后缀名改为zip, 使用WinRAR 打开后把META-INF folder 删掉

2. 将APK 文件的后缀名改回apk

3. 打开Command prompt,使用下面的命令给APK 重新签名

> jarsigner -keystore ~/.android/debug.keystore -storepass android -keypass android

APItoTest.apk androiddebugkey(重新签名)

> zipalign 4 APItoTest.apk TempAPItoTest.apk(省略该步骤)

* Note

~/.android/debug.keystore "~"匹配虚拟机avd 的path

zipalign 4 APItoTest.apk TempAPItoTest.apk Temp 文件时重新签名后的APK 文件,测试时需

要安装重新签名后的(adb install)

 

步骤六:在Step 3 的框架中写好Test Scripts后右键ExAPITest > Run as > Android JUnit Test

模拟器启动后, JUnit Test 就开始了