Android测试环境的核心是一个Instrumentation框架,在这个框架下,你的测试应用程序可以精确控制应用程序。使用Instrumentation,你可以在主程序启动之前,创建模拟的系统对象,如Context;控制应用程序的多个生命周期;发送UI事件给应用程序;在执行期间检查程序状态。Instrumentation框架通过将主程序和测试程序运行在同一个进程来实现这些功能。

通过在测试工程的manifest文件中添加元素来指定要测试的应用程序。这个元素的特性指明了要测试的应用程序包名,以及告诉Android如何运行测试程序。在Inustrumentation TestRunner章节有更多的细节描述。

下面的图片概要的描述了Android的测试环境

Instrumentation TestCase类

继承自JUnit TestCase类,并可以使用Instrumentation框架,用于测试Activity。使用Instrumentation,Android可以向程序发送事件来自动进行UI测试,并可以精确控制Activity的启动,监测Activity生命周期的状态。

基类是InstrumentationTestCase。它的所有子类都能发送按键或触摸事件给UI。子类还可以注入一个模拟的Intent。

子类有:

ActivityTestCase——Activity测试类的基类。

SingleLaunchActivityTestCase——测试单个Activity的类。它能触发一次setup()和tearDown(),而不是每个方法调用时都触发。如果你的测试方法都是针对同一个Activity的话,那就使用它吧。

SyncBaseInstrumentation——测试Content Provider同步性的类。它使用Instrumentation在启动测试同步性之前取消已经存在的同步对象。

ActivityUnitTestCase——对单个Activity进行单一测试的类。使用它,你可以注入模拟的Context或Application,或者两者。它用于对Activity进行单元测试。

Instrumentation TestRunner

Android提供了自定义的运行测试用例的类,叫做InstrumentationTestRunner。这个类控制应用程序处于测试环境中,在同一个进程中运行测试程序和主程序,并且将测试结果输出到合适的地方。IntrumentationTestRunner在运行时对整个测试环境的控制能力的关键是使用Instrumentation。注意,如果你的测试类不使用Instrumentation的话,你也可以使用这个TestRunner。

当你运行一个测试程序时,首先会运行一个系统工具叫做Activity Manager。Activity Manager使用Instrumentation框架来启动和控制TestRunner,这个TestRunner反过来又使用Intrumentation来关闭任何主程序的实例,然后启动测试程序及主程序(同一个进程中)。这就能确保测试程序与主程序间的直接交互。

最后,利用Android InstrumentationTestRunner 执行单个case:adb shell am instrument -e class com.autonavi.MinimapAutomationTool#testLayerCancelButton -w com.autonavi/android.test.InstrumentationTestRunner

命令解析如下:

  • start an Instrumentation: am instrument [flags]
  • -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)
  • -e : set argument to
  • -p : write profiling data to
  • -w: wait for instrumentation to finish before returning
  • -e后面加参数 class就可以指定一个测试类,里面包含了若干个测试方法。
  • 按照android帮助文档里面的名称,testsuite包含了若干个testcase,一个testcase其实就是一个测试类。

ui自动化测试框架_自动化测试框架--Instrumentation相关推荐

  1. selenium自动化测试框架_自动化测试框架

    为了适应快速发展的行业生态系统的步伐,必须加快应用程序交付时间,而且必须不能以质量为代价.在更短的时间内达到质量的目的至关重要,因此质量保障倍受关注.为了满足对卓越质量和更快迭代的要求,越来越多的企业 ...

  2. 平台框架_从框架到平台

    平台框架 当我在十年前以Java开发人员的身份开始职业生涯时,该行业正经历着革命性的变化. 2003年发布的Spring框架Swift流行,并成为庞大的J2EE平台的严重挑战者. 经过过渡时间后,我很 ...

  3. 应梦框架9.0框架_.Net框架能力问题和解答

    应梦框架9.0框架 This section contains Aptitude Questions and Answers on .Net Framework. 本节包含有关.Net Framewo ...

  4. selenium java框架_自动化测试框架selenium+java+TestNG——配置篇

    最近来总结下自动化测试 selenium的一些常用框架测试搭配,由简入繁,最简单的就是selenium+java+TestNG了,因为我用的是java,就只是总结下java了. TestNG在线安装: ...

  5. python写ui自动化测试用例_自动化测试(6) | Web UI 自动化测试方案

    Web项目的 UI 自动化测试方案 有用的链接: 项目讨论 项目中符合自动化测试的部分有哪些?(目标和范围 scope, 准入准出标准) 稳定的需求点.变动较少的页面 每日构建后的测试验证 daily ...

  6. 乐玩自动化测试模块_自动化测试模型(一)自动化测试模型介绍

    一个自动化测试框架就是一个集成体系,在这一体系中包含测试功能的函数库,测试数据源,测试对象标准,以及各种可重用的模块.自动化测试在发展过程中经历了以下几个阶段,模块驱动测试,数据驱动测试及对象驱动测试 ...

  7. java连接数据库不使用框架_实体框架数据库连接不重新连接

    我在Entity Framework中遇到了数据库连接问题 . 我在ASP.NET MVC 3 Web应用程序中使用EF 4.1.10331,但它也因EF 5而失败 . 当我的Web应用程序启动时,由 ...

  8. 机器学习框架_一个框架解决几乎所有机器学习问题

    一个叫 Abhishek Thakur 的数据科学家,在他的 Linkedin 发表了一篇文章 Approaching (Almost) Any Machine Learning Problem,介绍 ...

  9. python 消息框架_消息框架message

    在网页应用中,我们经常需要在处理完表单或其它类型的用户输入后,显示一个通知信息给用户. 对于这个需求,Django提供了基于Cookie或者会话的消息框架messages,无论是匿名用户还是认证的用户 ...

最新文章

  1. 在SolidWorks 3D CAD中构建乐高直升机
  2. 开源OCR文本检测器,基于TextBoxes++和RetinaNet
  3. 微服务架构下分布式事务解决方案——阿里GTS
  4. RocketMQ源码分析之RocketMQ事务消息实现原理上篇(二阶段提交)
  5. 工单系统的设计与实现(4)
  6. cocos2d-x学习笔记之图片分辨率适配
  7. Docker中RocketMQ的安装与使用
  8. Linux之使用MobaXterm远程连接Linux前提条件
  9. System.DllNotFoundException: 无法加载 DLL“GdltaxIA.dll”: 内存位置访问无效。 (异常来自 HRESULT:0x800703E6)。 WIN7系统
  10. 基于c语言中调试工具的用法汇总(不包含gdb)【转】
  11. 极品飞车8 免CD补丁 CDKEY生成器
  12. 航空订票系统(javaweb项目)
  13. 凹多边形三角剖分算法实现---基于Unity3D
  14. 如何算计算机主机地址,如何计算IP地址及CIDR -电脑资料
  15. 图片转换js (img对象,file对象,base64,canvas对象),以及图片压缩方式
  16. Idempotent Consumer
  17. html电子印章,挑战电子印章系统 HTML版
  18. mysql fastdfs_FastDFS监控系统Fastdfs-zyc配置
  19. 《大国大城》读书笔记
  20. 第一天:什么是Flink、WordCount入门、Flink安装、并行度

热门文章

  1. IIS 返回 405 - 不允许用于访问此页的 HTTP 谓词。终极解决办法!!!!
  2. android开发微博前的包准备,新浪微博开发之前期准备篇
  3. php能开发管理系统吗,PHP《个人管理系统》希望大家一起来开发
  4. 为什么大多数编程语言性能对比都有问题?
  5. 死磕算法!35 篇算法设计实例+6 本超赞好书打包送你
  6. OpenHarmony 1.1.0 LTS 版本发布,十六大性能全面提升
  7. 常年“盘踞”数据库前五的 MongoDB,在中国有哪些新动向?
  8. 万亿美元软件浪潮来临,开发者是核心!
  9. 达摩院研发自动驾驶高精定位系统,无GPS信号也可实现厘米级定位
  10. 50 岁再次创业:我希望 20 年后还能解 Bug