Robotium第二天:在模拟器安装被测的apk及其创建测试项目
?
?
因为要在命令行下运行一些android的工具,所以配置一些环境变量会比较方便:
?
配置ANDROID_HOME为android sdk的安卓目录,例如:D:\android-sdk
在path下添加这两个:
%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;
?
?
在模拟器中安装APK(以米聊作为测试的apk)
因为robotium要求被测应用和测试代码要有一致的key,所以我们需要把下载到的apk,通过re-sign.jar来产生debug key的apk,这个重新生成的apk就会跟测试项目签名一致了
?
re-sign.jar可以从这里下载到:
http://www.troido.de/re-sign.jar
?
下载完后,在命令行下 通过 java -jar re-sign.jar就会出现一个节目,然后将apk拖到这个节目,就会自动生成一个debug key的apk
?
产生新apk的过程中会弹出一个信息框,记得截下图,因为里面有两个信息我们等会的代码中需要用到
?
然后打开模拟器(模拟器器一定要打开才能安装成功),然后打开命令行?
adb install mitalk_debug.apk(新生成apk的名称)
安装成功就可以再模拟器里看到该应用的图标了
?
?
?
创建自动化测试项目
打开Eclipse,点击File->New一个Android Test Project ?mitalktest(之前用新浪微博但发现re-sign后装上去打开不了),然后点击下一步的时候选择This project(因为我们没有米聊应用的源码),然后选择要在哪个android版本上测试
?
在该项目下创建一个包,com.mitalk.test,在该包下创建LoginTest类,如下
?
?
package com.mitalk.test;
?
import org.junit.Test;
?
import android.app.Activity;
import android.test.ActivityInstrumentationTestCase2;
?
import com.jayway.android.robotium.solo.Solo;
?
@SuppressWarnings("rawtypes")
public class LoginTest extends ActivityInstrumentationTestCase2 {
public Solo solo;
public Activity activity;
private static Class<?> launchActivityClass;
//对应re-sign.jar生成出来的信息框里的两个值
private static String mainActiviy = "com.xiaomi.channel.ui.ChannelLauncherActivity";
private static String packageName = "com.xiaomi.channel";
?
static {
try {
launchActivityClass = Class
.forName(mainActiviy);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
?
@SuppressWarnings("unchecked")
public LoginTest() {
super(packageName, launchActivityClass);
}
?
@Override
protected void setUp() throws Exception {
super.setUp();
this.activity = this.getActivity();
this.solo = new Solo(getInstrumentation(), getActivity());
}
?
?
public void testLoginWithIncorrentUsernameAndPassword() {
?
}
@Override
public void tearDown() throws Exception {
try {
this.solo.finishOpenedActivities();
} catch (Throwable e) {
e.printStackTrace();
}
this.activity.finish();
super.tearDown();
}
?
}
?
右键该项目,选择property然后选择java build path, 选择 Add External JARs,选择下到的robotium.jar
往??testLoginWithIncorrentUsernameAndPassword()方法添加入下代码 主要要来验证下输入错误用户名和密码给出的提示信息是否和预期相符
solo.waitForText("Login", 1, 10000);solo.clickOnText("Login");solo.waitForText("OK", 1, 2000);solo.enterText(0, "13559494170");solo.enterText(1, "123456");solo.clickOnText("OK");solo.waitForText("Incorrect ID number or password.", 1, 10000);assertTrue(solo.searchText("Incorrect ID number or password.",true));
在跑测试用例之前,还需要修改下AndroidManifest.xml文件的android:targetPackage为被测应用的根的包名? <instrumentation? ? ? ? android:name="android.test.InstrumentationTestRunner"? ? ? ? android:targetPackage="com.xiaomi.channel" />
?以上都弄完了,run as android junit test,就可以跑了
有什么问题可以加入这个群讨论 ?
206261331
?
?
?
?
?
?
?
?
?