博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android自动化框架简要剖析(一):运行原理+基本框架
阅读量:6249 次
发布时间:2019-06-22

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

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、...都是二次封装它,作为测试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

转载于:https://www.cnblogs.com/zhitang2009/p/3423068.html

你可能感兴趣的文章
RSA签名验签学习笔记
查看>>
Codeforces 911E - Stack Sorting
查看>>
BZOJ 1853: [Scoi2010]幸运数字
查看>>
Pessimistic and optimistic locking
查看>>
基于敏捷的测试交付物通用设计
查看>>
svn变更自动触发jenkins构建工程-简单版
查看>>
BFS --- 素数环
查看>>
for循环每次取出一个字符(不是字节)
查看>>
linux版本选择
查看>>
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
查看>>
Java DynamoDB 增加、删除、修改、查询
查看>>
【转】linux下 postgres的一些操作总结
查看>>
不写for也能选中checkbox!
查看>>
PCIE_DMA:xapp1052学习笔记
查看>>
[原译]接口VS 委托
查看>>
EF 一对一、一对多、多对多配置语句小记
查看>>
cacti
查看>>
Android studio教程:[1] 创建app项目
查看>>
matplotlib图像中文乱码(python3.6)
查看>>
PKUSC2018游记
查看>>