zoukankan      html  css  js  c++  java
  • 使用robotium对android应用进行自动化测试

    所需要的环境:

    1、eclipse

    2、android development tools(ADT)

    3、software develoment kit(SDK)

    4、JDK

    5、robotium

    1-4的环境内容为android应用刚开发环境的搭建过程,不再赘述。

    robotium jar包的下载:

    http://code.google.com/p/robotium/downloads/list下下载jar包:robotium-solo-3.1.jar(当然会有更新的)


    1、在eclipse中创建一个工程:

    android工程:

    File -> new -> Project -> Android Application Project  -> next

    (1)在New Android Application中设置应用名字、工程名字和包名

    (2)选择开发使用的SDK的版本和最低限制的SDK版本

    然后一步一步到finish。


    Android Test Project :

    官网上可以创建一种叫做测试工程的工程:

    File -> new -> Project -> Android Test Project  -> next -> 设置名字,next -> select test target窗口中,选择要测试的project或者选择this project以后next -> finish

    此时的新建的工程的src里面会有初始的包。

    注:如果是一个没有其他的android工程的空间里,新建一个Test Project工程会出错。解决办法就是新建一个Android Application Project工程,里面可以什么都没有。


    以上两个工程在我看来没有太大的区别,就是包名可能不同,test工程会按照选定的project里的包名后面加一个test后生成一个包。AndroidManifest.xml不太相同,在做测试的时候可以把AndroidManifest.xml修改为测试所需的。

    2、在该工程下新建一个libs文件夹,文件夹中包含所需要的包,我们这里暂时只需要将下载的robotium的包加入。

    3、在build path里面将robotium包加上即可

    4、修改AndroidManifest.xml为以下形式

    <?xml version="1.0" encoding="utf-8"?>
    <!-- package为测试的包名,需要自己制定 -->
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="testPackage"
        android:versionCode="1"

        android:versionName="1.0" >


        <!-- 设定sdk的版本,必须有 -->
        <uses-sdk android:minSdkVersion="10" />

        <!-- 设定运行的类,这里指定为android.test.InstrumentationTestRunner -->
        <!-- targetPackage指定测试的包名 -->
        <!-- 下面这段必须 -->
        <instrumentation
            android:name="android.test.InstrumentationTestRunner"
            android:targetPackage="PackagetoTest" />

        <!-- 注意需要<uses-library>这个是必须的 -->
        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >
            <uses-library android:name="android.test.runner" />
        </application>

    </manifest>

    5、在我们设定的测试包中新建一个类文件

    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;


    import android.test.ActivityInstrumentationTestCase2;


    import com.jayway.android.robotium.solo.Solo;

    //必须要继承自ActivityInstrumentationTestCase2类
    public class Test1 extends ActivityInstrumentationTestCase2{
    private static final String TARGET_PACKAGE_ID = target_package; //需要自己指定需要测试的包的名字
    private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME =target_launcher;//自己指定启动应用的类名
    private static Class launcherActivityClass;
    private Solo solo;
    static{
    try
    {
    launcherActivityClass=Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);

    catch (ClassNotFoundException e){
    throw new RuntimeException(e);
    }
    }

    //构造函数,需要调用super的构造
    public TestNumber() {
    super(TARGET_PACKAGE_ID,launcherActivityClass);
    // TODO Auto-generated constructor stub
    }

    //测试用例,需要以test开头,这是junit3以前的定义

    public test1(){

    solo.clickOnScreen(555,555);

    }

    @Override
    public void setUp() throws Exception {
    // TODO Auto-generated method stub
    solo = new Solo(getInstrumentation(),getActivity());
    }

    @Override
    public void tearDown() throws Exception {
    // TODO Auto-generated method stub
    try{
    solo.finishOpenedActivities();
    }catch(Throwable e){
    e.printStackTrace();
    }

    super.teardown();
    }

    }

    按照以上方式用例写好。

    6、由于测试的工程的签名需要与我们拿到的包的签名一致,因而需要重签名。

    (1)解压apk包,将里面的meta-inf文件夹删掉

    (2)打包删掉了meta-inf文件夹后的包为.apk文件

    (3)在dos界面进入到需要测试的apk的文件夹中,然后运行:

    jarsigner -keystore /debug.keystore -storepass android -keypass testapkname.apk命令进行安装


    8、在eclipse里面鼠标右键,run as -> Android Junit Test方式运行即可。

  • 相关阅读:
    回旋矩阵
    Python学习手记——了解Python
    My first Qt program
    10种使你的C程序更加高效的方法
    GCC指令
    缓冲思想
    Python学习手记——Whetting your appetite
    分割视图
    MSN Messenger 中的漏洞可能导致信息泄露 (838512)
    ASP.NET Popup Control
  • 原文地址:https://www.cnblogs.com/shenguo/p/3958246.html
Copyright © 2011-2022 走看看