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

简介:

    导入好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中的点击“管理”选项)

         

      (case中的点击“连接选项”)

 



本文转自 风泊海上 51CTO博客,原文链接:http://blog.51cto.com/fengbohaishang/1001583

相关文章
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
363 61
|
6月前
|
人工智能 边缘计算 搜索推荐
AI产品测试学习路径全解析:从业务场景到代码实践
本文深入解析AI测试的核心技能与学习路径,涵盖业务理解、模型指标计算与性能测试三大阶段,助力掌握分类、推荐系统、计算机视觉等多场景测试方法,提升AI产品质量保障能力。
|
安全 Java 数据库
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
这篇文章是关于Apache Shiro权限管理框架的详细学习指南,涵盖了Shiro的基本概念、认证与授权流程,并通过Spring Boot测试模块演示了Shiro在单应用环境下的使用,包括与IniRealm、JdbcRealm的集成以及自定义Realm的实现。
435 3
shiro学习一:了解shiro,学习执行shiro的流程。使用springboot的测试模块学习shiro单应用(demo 6个)
|
自然语言处理 机器人 Python
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
ChatPaper是一个基于文本生成技术的智能研究论文工具,能够根据用户输入进行智能回复和互动。它支持快速下载、阅读论文,并通过分析论文的关键信息帮助用户判断是否需要深入了解。用户可以通过命令行或网页界面操作,进行论文搜索、下载、总结等。
451 1
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
|
测试技术
软件质量保护与测试(第2版)学习总结第十三章 集成测试
本文是《软件质量保护与测试》(第2版)第十三章的学习总结,介绍了集成测试的概念、主要任务、测试层次与原则,以及集成测试的不同策略,包括非渐增式集成和渐增式集成(自顶向下和自底向上),并通过图示详细解释了集成测试的过程。
364 1
软件质量保护与测试(第2版)学习总结第十三章 集成测试
|
前端开发 JavaScript 安全
学习如何为 React 组件编写测试:
学习如何为 React 组件编写测试:
188 2
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
人工智能 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS
|
安全 大数据 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(3-2):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(3-2):渗透测试行业术语扫盲)作者——LJS
|
SQL 安全 网络协议
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-2):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-2):渗透测试行业术语扫盲)作者——LJS