zoukankan      html  css  js  c++  java
  • android自动化框架简要剖析(一):运行原理+基本框架

    android自动化测试原理:

    1、将测试apk和被测试apk,运行在一个进程中;通过instrumentation进行线程间的通信

    2、通过android.test.AndroidTestCase及其子类,控制android系统对象

    3、通过android.test.InstrumentationTestCase 及其子类,测试Activity

    被测试程序的manifest文件中要指定被测试程序,如下:

    <instrumentation

             android:name="android.test.InstrumentationTestRunner" 

             android:targetPackage="cn.mama.activity" />

    4、当你运行一个测试程序时,首先会运行一个系统工具叫做Activity Manager。

    Activity  Manager使用Instrumentation框架来启动和控制TestRunner,

    这个TestRunner反过来又使用Intrumentation来关闭任何主程序的实例,

    Activity  Manager加载并启动你的测试程序,杀死主程序的任何实例,

    然后在测试程序的同一个进程里加载主程序,然后传递测试程序的第一个测试用例。

    这个时 候,TestRunner会接管这些测试用例,运行里面的每个测试方法,直到所有的方法运行结束。

    这就能确保测试程序与主程序间的直接交互。

    1、Instrumentation测试程序和被测试程序通信核心,起测试驱动作用。目前的robotium、athran、Selendroid...都是二次封装它,作为测试api用。

    就像Selenium 2 的webdriver一样,测试架构和代码风格很类似

    这里只列出主类列表,具体解释看第二篇
    java.lang.Objectjava.lang.Object
    ↳ android.app.Instrumentation

    ↳ android.app.Instrumentation
    ↳ android.test.InstrumentationTestRunner

    2、junit.framework.TestCase测试框架,用来管理测试用例 和 用例集

    java.lang.Object
    ↳ junit.framework.Assert
    ↳ junit.framework.TestCase
    ↳ android.test.InstrumentationTestCase
    ↳ android.test.ActivityTestCase
    ↳ android.test.ActivityInstrumentationTestCase2<T extends android.app.Activity>

    java.lang.Object
    ↳ junit.framework.Assert
    ↳ junit.framework.TestCase
    ↳ android.test.AndroidTestCase
    ↳ android.test.PerformanceTestCase   (这是Interface)


    Known Direct Subclasses:
    AndroidTestCase,
    InstrumentationTestCase,
    TestSuiteBuilder.FailedToCreateTests

    Known Indirect Subclasses
    ActivityInstrumentationTestCase<T extends Activity>,
    ActivityInstrumentationTestCase2<T extends Activity>,
    ActivityTestCase,
    ActivityUnitTestCase<T extends Activity>,
    ApplicationTestCase<T extends Application>,
    LoaderTestCase,
    ProviderTestCase<T extends ContentProvider>,
    ProviderTestCase2<T extends ContentProvider>,
    ServiceTestCase<T extends Service>,
    SingleLaunchActivityTestCase<T extends Activity>,
    SyncBaseInstrumentation

  • 相关阅读:
    无需认证的mail,适用于ZABBIX等运维系统
    Linux交换分区使用过多的处理办法
    zookeeper的单实例和伪集群部署
    Zookeeper分布式集群原理与功能
    Nginx禁止IP直接访问网站
    镜像站地址汇总
    Nginx反向代理后端多节点下故障节点的排除思路
    Redis主从复制与高可用方案
    http_proxy_module模块常用参数
    Nginx实现负载均衡的几种方式
  • 原文地址:https://www.cnblogs.com/zhitang2009/p/3423068.html
Copyright © 2011-2022 走看看