基于APK的自动化测试

     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,注意观察屏幕,被测应用就会被启动起来

posted @ 2016-03-06 15:05  被窝疯  阅读(1664)  评论(0编辑  收藏  举报