标签:
Robotium第一个例子(NotePad)中是基于源码的自动化测试,Robotium也可以基于APK进行自动化测试,也就是说你只要有APK文件,没有源代码,也可以进行自动化测试的。
在做基于APK的自动化测试的过程中,需要确保的一点是,被测试的APK必须跟测试项目具有相同的签名,那怎么做才能确保两者拥有相同的签名呢?
第一步,首先将被测APK的签名去掉,然后用debug keystore重新进行签名,Eclipse也是使用debug keystore为默认的keystore为应用签名的,这样就可以保证被测应用和测试应用拥有同样的签名了
Eclipse默认的debug keystore可以在这个地方设置,Window-> Preferences-> Android -> Build
去掉APK的签名,然后为之重新签名,可通过re-sign.jar这个jar来进行(自行到网上下载吧)
双击运行re-sign.jar,会出现如下的窗口
假设现在有一个APK,现在只需将这个APK拖动到上图的APK图标位置,re-sign.jar就会去掉改APK的签名,然后重新以debug keystore为该APK重新签名,如下图所示
点击保存按钮,等待一会,会出现如下窗口
这样就表明重签名成功了,并获得了被测应用的Package name和Main activity。记住Package name和Main activity,后面会用到
第二步,创建基于APK测试的测试工程
在Eclipse里面新建一个Android Test Project,并命名为QunarTest,在Select Test Target这个窗口时,需要选择“This project”
接着根据提示选择相应的按钮,完成测试工程的创建。
测试工程创建完毕后,新建一个libs文件夹,将Robotium的jar放到该文件夹下,然后将该jar添加到build path中
第三步,编写第一个基于APK测试自动化用例
新建一个包, com.qunar.test,新建第一个测试类FirstQunarTest,继承ActivityInstrumentationTestCase2,具体代码如下
package com.qunar.test; import android.test.ActivityInstrumentationTestCase2; import com.robotium.solo.Solo; public class FirstQunarTest extends ActivityInstrumentationTestCase2 { private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME="com.Qunar.NoteActivity"; private static Class <?> launcherActivityClass; static{ try{ launcherActivityClass= Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); }catch(ClassNotFoundException e){ throw new RuntimeException(e); } } @SuppressWarnings("unchecked") public FirstQunarTest(){ super(launcherActivityClass); } private Solo solo; @Override protected void setUp() throws Exception{ solo= new Solo(getInstrumentation(),getActivity()); } public void testCanOpenSettings(){ solo.pressMenuItem(0); } @Override public void tearDown() throws Exception{ solo.finishOpenedActivities(); } }
其中LAUNCHER_ACTIVITY_FULL_CLASSNAME是由前面的re-sign.jar获得的Main Activity
第四步,安装应用,运行自动化用例
通过adb install 命令将重签名获得的qne_debug.apk安装到设备上
修改AndroidMainfest.xml里instrumentation的targetPackage的值为上面re-sign.jar获得的package name,即com.Qunar
鼠标右击FirstQunarTest,选择Run As -> Android JUnit Test,注意观察屏幕,被测应用就会被启动起来
标签:
原文地址:http://www.cnblogs.com/Akubi/p/5247511.html