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 就开始了