博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Robotium-无源码测试
阅读量:5017 次
发布时间:2019-06-12

本文共 3645 字,大约阅读时间需要 12 分钟。

【总结】

1、新建工程,选择Android Application Project,选择This Project;
  PS:新建测试工程时报NULL错误,新建一个Android工程,然后再按上诉步骤建立测试工程即可解决;
2、找到要测试包名和主类名:
    (1)apk去签名,并且使用debug签名---使用re-sign.jar进行重新签名;
    (2)eclipse的logcat查看包名;
    (3)Hierarchy  Viewer;
3、修改AndroidManifest.xml:
    (1)要测试app签名;
    <instrumentation
          android:name ="android.test.InstrumentationTestRunner"
        android:targetPackage ="com.example.mobile.testedapp" />
4、编写代码;
 
【详细过程】:
 (1)在eclipse里面右键,点击“New”进入创建Android项目界面,选择“Android Test Project”;
 (2)点击“Next”,输入一个你的测试项目的名字:(比如RobotiumTest),其他默认就可以了,如下图:
       
 (3)点击“Next”,选择“This Project”选项,最后“Finish”就可以了;
 (4)新建好测试程序之后,把Robotium的jar包导入工程里:
   ① 去官网下载Robotium版本包( );
   ② 选中项目,右键,点击“Properties”选项,再点击“Resource”选项下的“Java Build Path”,选中“Librararies”选项;
   ③ 选择“Add External JARs…”,选中jar包,导入进去;
   ④ 点击最后一个选项栏“Order and Export”选项,把下面的android api版本和你导入的robotium包选项都勾选;
 (5)在进程测试前需要知道你测试apk的包名和主类名,
这个是必须的,没有源码可以,但是你要找不到这两个,你的robotium测试就进行不下去了
  如何找到要测试的apk的包名和类名:
     
1)方法一:
把apk装到模拟器或者真机上,然后到eclipse里面查看Logcat界面,进入apk主界面,你会在Logcat里面找到AcativityManager一项,后面会显示出你的主界面的包名和类名。如下图所示。

     
 2)方法二:
使用Hierarchy  Viewer这个工具查看。这个是Android tools下的工具,在eclipse选项里也存在,在eclipse的选项“DDMS--Java”那个选项里可以看到。
不过在eclipse里使用这个工具有时会连接不上真机,我一般都是单独使用“Hierarchy  Viewer”这个工具。
这个工具在你的android sdk安装路径下的tools文件包里,名字叫做“hierarchyviewer.bat”。我一般都是把它发送到桌面上一个快捷方式启动,方面连接。这个工具的使用也很简单。连上真机或者打开模拟器,然后双击启动这个工具,两分钟之后,你就会看到如下界面:  
这里面会详细显示你操作的模拟器或真机对应的包名和类名。当然,你在真机或者模拟器上,第一次点击apk程序进入主界面,就能找到了apk的包名和主类名。
 
     
 3)方法三:
使用一个debug去签名工具,也可以轻松找到你要测得apk的包名和主类名,截图如下:

         

 (6)新建测试类:
package com.example.test.test;import org.junit.After;import org.junit.Before;import org.junit.Test;import com.robotium.solo.Solo;import android.test.ActivityInstrumentationTestCase2;import android.util.Log;public class RobotiumTest1 extends ActivityInstrumentationTestCase2 {    public static String log_tag = "RobotiumTest1";    // 此处为你要测试的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.p4.activity.ExploreActivity";    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 RobotiumTest1() { super(TARGET_PACKAGE_ID, launcherActivityClass); } // 定义一个Solo对象 private Solo solo; @Before protected void setUp() throws Exception { // 创建进入测试apk界面的方法 solo = new Solo(getInstrumentation(), getActivity()); } // 这是自己定义的一个测试case,只是简单进入界面,点击一下两个选项 @Test public void test_Watch_001() { solo.sleep(Sleeptime1); if(solo.searchText("应用")){ Log.i(log_tag, "找到了文本:应用"); solo.clickOnText("应用",1); solo.sleep(Sleeptime1); }else{ Log.i(log_tag, "找不到了文本:应用"); } } // 测试类结束的方法 @After public void tearDown() throws Exception { try { solo.finishOpenedActivities(); } catch (Throwable e) { e.printStackTrace(); } getActivity().finish(); super.tearDown(); }}
View Code

  (7)配置测试程序的AndroidManifest.xml文件:

View Code

 (8)运行你的测试工程:

  右键,点击“Run as”选项,然后选择“Android Junit Test”选项;

 

参考资料:http://fengbohaishang.blog.51cto.com/5106297/999764

转载于:https://www.cnblogs.com/splvxh/p/4208537.html

你可能感兴趣的文章
ArrayList的使用方法
查看>>
面向对象高级
查看>>
Bitwise And Queries
查看>>
打印Ibatis最终的SQL语句
查看>>
HBase之八--(3):Hbase 布隆过滤器BloomFilter介绍
查看>>
oracle连接问题ORA-00604,ORA-12705
查看>>
NOI 2019 退役记
查看>>
java的几个日志框架log4j、logback、common-logging
查看>>
Java从零开始学十三(封装)
查看>>
Python2和Python3中的rang()不同之点
查看>>
MySQL的外键,修改表,基本数据类型,表级别操作,其他(条件,通配符,分页,排序,分组,联合,连表操作)...
查看>>
UVALive 4128 Steam Roller 蒸汽式压路机(最短路,变形) WA中。。。。。
查看>>
记忆--1.致我们不可缺少的记忆
查看>>
lintcode28- Search a 2D Matrix- easy
查看>>
react项目
查看>>
C# 万年历 农历 节气 节日 星座 星宿 属相 生肖 闰年月 时辰(转)
查看>>
A Simple Tree Problem
查看>>
Modular Inverse [ZOJ 3609]
查看>>
MySQL性能测试工具之mysqlslap使用详解
查看>>
深入理解jsonp跨域请求原理
查看>>