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;@Overrideprotected void setUp() throws Exception{solo= new Solo(getInstrumentation(),getActivity());}public void testCanOpenSettings(){solo.pressMenuItem(0);}@Overridepublic 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,注意观察屏幕,被测应用就会被启动起来

转载于:https://www.cnblogs.com/Akubi/p/5247511.html

基于APK的自动化测试相关推荐

  1. python appium自动化测试框架unittest_Appium基于Python unittest自动化测试 自动化测试框架 -- PO并生成html测试报告...

    基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告 代码示例: #利用unittest并生成测试报告 class Appium_test(unitt ...

  2. Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)

    Jenkins简介 Jenkins是Java编写的非常流行的持续集成(CI)服务,起源于Hudson项目.所以Jenkins和Hudson功能相似. Jenkins支持各种版本的控制工具,如CVS.S ...

  3. 设计自己的基于Selenium 的自动化测试框架-Java版(3) - 给框架分分层

    设计自己的基于Selenium 的自动化测试框架-Java版(3) - 给框架分分层 给我们的框架分为3层,分别是叫逻辑层,数据层,对象层. 这三层的存储格式都用xml来表示. 1.逻辑层 (test ...

  4. 设计自己的基于Selenium 的自动化测试框架-Java版(2) - 定义自己的工作流程

    设计自己的基于Selenium的自动化测试框架-Java版(2) -定义自己的工作流程 Work flow chart 上图是整个工作流程,红色虚线上面的需要手动来完成,红色虚线下面的实现自动化. 我 ...

  5. python的web自动化框架实例_Selenium基于Python web自动化测试框架 -- PO

    关于selenium测试框架首先想到的就是PO模型,简单说下PO模型 PO模型的概念和理解: PO就是一个设计思想,将代码以页面为单位进行组织,针对这个页面上的所有信息.相关操作都放到一个类中,从而使 ...

  6. 基于CNN的自动化测试实践

    基于CNN的自动化测试实践 ReLuQ 交叉学科就像交叉特征一样有趣 已关注 2 人赞同了该文章 写在开头: 本篇是笔者在公司的一个项目,主要与公司测试部一位经验丰富的老哥(曾在华为腾讯任职十年)合作 ...

  7. matlab怎么创建测试程序,基于MATLAB的自动化测试系统及方法与流程

    本发明涉及一种自动化测试系统及方法,特别涉及一种基于MATLAB的自动化测试系统及方法. 背景技术: 目前,无线电技术的应用越来越广,相关产品在日常生活中已经是无处不在.对于生产无线电产品的厂家来说, ...

  8. matlab 自动化,基于MATLAB的自动化测试系统及方法技术方案

    [技术实现步骤摘要] 基于MATLAB的自动化测试系统及方法 本专利技术涉及一种自动化测试系统及方法,特别涉及一种基于MATLAB的自动化测试系统及方法. 技术介绍 目前,无线电技术的应用越来越广,相 ...

  9. 使用Selenium实现基于Web的自动化测试

    转载自:https://www.ibm.com/developerworks/cn/web/1209_caimin_seleniumweb/ Selenium 是一个用于 Web 应用程序测试的工具. ...

最新文章

  1. GSL库在VC6.0上的配置
  2. ALV报表复制程序标准工具栏
  3. 破解修改 Electron 软件 | 游戏
  4. 在手机测试html,借助 IIS 管理器 -- 用手机测试HTML页面
  5. 半年之殇:困扰半年的MSP430的I2C总线问题在今天解决,发文总结
  6. (81)Vivado实现约束过程
  7. 软件测试:web渗透测试怎样入门!讲透了...
  8. php限制接口访问次数_令牌桶限流思路分享(PHP+Redis实现机制)
  9. php 实现防盗链,php中如何实现防盗链的示例
  10. 医疗大数据可能面临的挑战
  11. openjdk8之编译和debug
  12. 机械工程师手册 pdf版下载_机械设计问题 简明手册介绍的还是很全面详尽的(附PDF手册)...
  13. 定时任务实现(中午12点执行,每1分钟执行一次)
  14. KICAD批量修改原理图(.sch)中的字段
  15. 指针式仪表自动读数与识别(四):非圆形表盘定位
  16. 【SVG.js】简介
  17. Oracle日期加3天 加月 加年 上一月(MySQL获取上一月 上个月) 上一日 上一天 日期加一天
  18. 有关STP测试的小实验
  19. Android Paint的使用详解
  20. Threes.js入门篇之9 - 全景图

热门文章

  1. 关键字—修饰方法、类、属性和变量的关键字(共9个)
  2. Django-5.1 模型层 单表操作
  3. 2017.4.20实验三:4、定义一个带有默认值参数的函数,通过传递不同个数的参数值,调用该函数。...
  4. Linux date命令的用法
  5. github 提交报403 forbidden的错误解决
  6. 廖雪峰Java10加密与安全-4加密算法-5非对称加密算法
  7. 关于hibernate的查询
  8. Visual Studio图形调试器详细使用教程(基于DirectX11)
  9. 一种求凸多边形内部似最大圆的算法
  10. [转载]图的割点、桥与双连通分支