Android自动化测试之Robotium学习(三)

转载 2016年05月31日 17:20:22
导入好robotium包之后,我们就可以在自己的工程中新建测试类进行测试。下面以我们开始建的RobotiumTest项目为例进行说明。
     代码如下:
package com.android.adb.test;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
 
public class TestRobotium extends ActivityInstrumentationTestCase2
{   
    //此处为你要测试的apk的包名,这里我测得是豌豆荚2
    private static final String TARGET_PACKAGE_ID ="com.wandoujia.phoenix2";
    //此处的classname是你要测得apk的主类名,也就是进入apk第一个activity的类名
    private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME ="com.wandoujia.phoenix2.NewWelcomeActivity";
    private static Class<?> launcherActivityClass;
    // 定义一个休眠时间 2000毫秒
    private static final int Sleeptime1 = 2000;
    static
    {
    try    
    {
        
        launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
    }
    catch(ClassNotFoundException e)
    {
        throw new RuntimeException(e);
    }
    }
    
    @SuppressWarnings("unchecked")
    //创建与测试类同名的构造方法
    public TestRobotium()
    {
    super(TARGET_PACKAGE_ID,launcherActivityClass);
    }
    //定义一个Solo对象
    private Solo solo;
    
    protected void setUp()throws Exception
    {
    //创建进入测试apk界面的方法
    solo= new Solo(getInstrumentation(),getActivity());
    }
    //这是自己定义的一个测试case,只是简单进入界面,点击一下两个选项
    public void test_Watch_001(){
    
    solo.sleep(Sleeptime1);
    solo.clickOnText("管理");
    solo.sleep(Sleeptime1);
    solo.clickOnText("连接");
        solo.goBack();
    }
    //测试类结束的方法
    public void tearDown()throws Exception
    {
    try
    { 
        solo.finalize();
    }
    catch(Throwable e)
    {
        e.printStackTrace();
    }
    getActivity().finish();
    super.tearDown();
    }
 
}
    
      这是我以自己下载的豌豆荚apk为测试例子,里面的注释已经很清楚了,除了一个自己写的测试case外,其他的几个方法,像TestRobotium()、setUp()、tearDown()方法,都是测试必须的。
       这里主要说明的就是,你要找到你要测试的apk的包名和主类名,这个是必须的,没有源码可以,但是你要找不到这两个,你的robotium测试就进行不下 去了。如果你没有源码时,仅有一个apk,怎样找到这个apk的包名和主类名呢,有两种方法,先放在这里,稍后再说。
      主类配置好后,你的robotium测试程序配置还没有完成,还需要配置一下你的测试程序的AndroidManifest.xml文件,这个大家肯定很熟悉了。
下面是我的文件代码:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.adb.test"
    android:versionCode="1"
    android:versionName="1.0" >
    
 <!-- 最小的api版本 -->
<uses-sdk android:minSdkVersion="14" />
<!-- 添加这一句是减少一些控件点击失效的情况 -->
<supports-screens android:anyDensity="true" />
 
<!-- 下面的配置是关键,正确填写你要测试的apk的包名-->
    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.wandoujia.phoenix2" />
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <!-- 引用android中测试的包 -->
        <uses-library android:name="android.test.runner" />
    </application>
</manifest>
 
     同样,代码已经给出了注释,这里最要注意的,也是要正确添加你要测试的包名,以及引用robotium测试包。
       这个程序的配置是最基础的,是每个robotium测试程序必须有的,其他的不同就是根据你测试的apk不同,书写不同的测试case了。
       配置好之后,就可以选中你的项目,右键,点击“Run as”选项,然后选择“Android Junit Test”选项,(不是“Android Application”选项),然后开始进行测试了。
       注意!注意!这里有两个前提:一、你的模拟器或着真机中已经安装了这个你要测试的apk。(我的是豌豆荚)。二、你的apk已经去过签名了,并且使用的是debug签名,否则除非你知道你要测试程序的原始签名是什么。
      关于签名,这也是一个很重要的问题,等到下篇进行详解。这里给出两张上面的豌豆荚Robotium case运行成功的图片:

          

   (case中的点击“管理”选项)

         

Android自动化测试之Robotium学习(四)

上一篇遗留了两个问题:一、如何找到要测试的apk的包名和主类名。二、怎样对要测试的apk进行去签名,并且使用debug签名。       一、先解决第一个问题,如何找到要测试的apk的包名和类名...
  • tozheng
  • tozheng
  • 2016年05月31日 17:24
  • 588

Android自动化测试之Robotium学习(二)

新建好测试程序之后,我们需要做的就是把Robotium这个包导入进你的工程里。这样才能跟Robotium关联起来。     现在最新的版本是3.4.1,不过我现在在用3.1版本,就以3.1版本为...
  • tozheng
  • tozheng
  • 2016年05月31日 17:14
  • 417

Robotium学习笔记三

以下是从网络上抄录的一些Robotium注意事项 1)有些button没有string,没有text,只能通过index来click这样很不直观,而且button的index并不是固定的,有...
  • hades0821
  • hades0821
  • 2013年10月09日 17:30
  • 1428

Android平台Robotium UI测试详解

Android平台Robotium UI测试详解Robotium 框架工作原理及实践Robotium 是什么一款面向Android端的开源自动化测试框架,,Robotium是基于Instrumenta...
  • cfy137000
  • cfy137000
  • 2017年03月09日 21:02
  • 775

java中final关键字的使用及static final 和final的区别

javastring优化 java中final关键字可以用在类成员(是不是所谓的域),类的方法及类中。 一、final用在域中表示: 1,一个永不改变的编译时常量。 2,一个在运行时被...
  • u013256831
  • u013256831
  • 2014年09月13日 16:53
  • 3487

Android Studio环境下基于Robotium的自动化黑盒测试

### 能力要求 1. 能使用Java、C++或其他程序设计语言编写程序 2. 能使用Python进行简单的脚本编写 3. 能使用一些简单的**Linux命令** *(Android Kernal i...
  • huashuncai123
  • huashuncai123
  • 2016年07月10日 16:41
  • 2485

Android自动化测试:Robotium在Android Studio中的使用

Android自动化测试:Robotium在Android Studio中的使用
  • xiezhihua120
  • xiezhihua120
  • 2015年08月04日 10:01
  • 1657

Robotium之Android控件定位实践和建议(Appium/UIAutomator姊妹篇)

本人之前曾经撰文描述Appium和UIAutomator框架是如何定位Android界面上的控件的。 UIAutomator定位Android控件的方法实践和建议 Appium基于安卓的各种Fin...
  • zhubaitian
  • zhubaitian
  • 2014年10月05日 16:27
  • 9117

Robotium源码分析之运行原理

从上一章《Robotium源码分析之Instrumentation进阶》中我们了解到了Robotium所基于的Instrumentation的一些进阶基础,比如它注入事件的原理等,但Robotium作...
  • zhubaitian
  • zhubaitian
  • 2014年11月12日 09:17
  • 3999

Jenkins+Ant+Android+Robitium 实例详解(打包app,执行Robotium测试,生成测试结果)

Jenkins Ant 打包android app,构建Robotium测试,执行Robotium测试,生成测试结果 实例详解 说明: android project 名称: cheersApp an...
  • achang21
  • achang21
  • 2015年04月23日 19:49
  • 4645
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android自动化测试之Robotium学习(三)
举报原因:
原因补充:

(最多只允许输入30个字)