• 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

  • 相关阅读:
    我的腾讯云服务器被暴力破解了
    asp.net 动态运用webservice并设置超时时间
    Elasticsearch7.4 spring boot 使用 RestHighLevelClient实现searchAfter分页
    华为OD机试题
    获取某日期后一周、一月、一年的日期 php
    PHP 读取文件夹(比如某共享文件夹)中的图片并显示
    php 获取某文件夹(比如共享文件夹)下图片并下载并压缩成zip
    数据库集群简单概念
    java数据流
    SpringBoot使用切面+注解实现对所有请求的日志记录到数据库中
  • 原文地址:https://www.cnblogs.com/zhitang2009/p/3423068.html
Copyright © 2020-2023  润新知