最近小玩了一下robotium,完全是出于个人爱好
了解一下Andorid SDK怎么用,再看看robotium能干啥
robotium是个做UI自动化的工具,当然是Android系统的UI自动化,目前的版本是4.1.
robotium做自动化有两种模式,一种是需要源码的,另一种就是直接对于apk进行黑盒测试。
记录下我在对例程AndroidCalculatorTestApk进行研究的时候的一些问题的解决,方便各位
1. JDK要装,path也要设置,要不然SDK不会自动生成keystore文件。
2. 在对测试包重新签名的过程中,如果是JDK7,一定要用下面的命令签名
jarsigner -keystore [debug.keystore Path] -storepass android -keypass android [APK file Path] androiddebugkey -digestalg SHA1 -sigalg MD5withRSA
否则你在用adk install *.apk的时候就会遇到such error “Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]”
3. zipalign 4 [path of presign apk] [path of postsign apk] 不知道是不是必须做,据说是个签名对其的工具,不太清楚,反正也能安装
4. 我在网上搜到说SDK必需和robotium的版本一致,(例如robotium的版本是4.1,那么SDK也得用4.1),这个不确定。
5. 最后一个讨厌的问题还是在Eclispe上,你必须把robotium加入Libraries,还得把Order and Export也选上
6. 一段基本的代码如下
package com.testalc;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
@SuppressWarnings("unchecked")
public class TestApk extends ActivityInstrumentationTestCase2{
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(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 edit-field, we are writing 10
solo.enterText(0, "10");
//Enter any integer/decimal value for first edit-field, 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();
}
}
基本的意思还是能看懂的,还需要自己仔细研读啊