Android自动化测试工具简介

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android自动化测试工具简介随着Android的流行和发展,基于Android的应用开发越来越多,相应的测试方法和测试工具也越来越多,掌握好这些测试工具对测试团队提高工作效率有很大的帮助,本文将就Android平台上的几款常用的测试工具进行简单介绍。Instrumentation

Instrumentation是Android系统提供的基于junit的自动化单元测试框架,它提供了对Android系统API和对象的访问接口,可以控制和检查应用程序、模拟用户操作、获取系统状态,实现对应用程序或系统的功能、性能、UI、API 等的自动化测试。Instrumentation框架通过将主程序和测试程序运行在同一个进程来实现这些功能。

图1:引用自:

/guide/topics/testing/testing_android.html 1)测试类型

要对Android应用程序进行单元测试有三种方法:

第一,基于Junit的单元测试,这个测试运行在JDK下,测试一些和android 无关的东西,比如业务逻辑,数据封装,数值计算等等。

第二,基于AndroidTestCase,不使用Instrumentation框架,但可以访问系统对象如Context,通过Context可以访问到资源,文件,数据库等。

第三,基于InstrumentationTestCase,使用Instrumentation框架,入口是InstrumentationTestRunner,这是一个没有图形界面的,具有启动能力的,用于监控其他类的工具类。

2)主要测试类

Android系统的单元测试框架位于包android.test中,其核心类图具有如下结构:

图2:Instrumentation单元测试类结构

1. Android的测试用例组织形式是和junit一样的,也是由TestSuite和TestCase组成,其中TestSuite的实现是InsturmentationTestSuite,而所有测试类都继承了两个类:AndroidTestCase和InstrumentationTestCase。

ApplicationTestCase用于测试应用程序,允许注入一个模拟的Context 到应用程序中。

ProviderTestCase2 用于测试ContentProvider,要求使用MockContentResolver,并注入一个IsolatedContext,因此Provider的测试是与OS孤立的。

ServiceTestCase 用于测试Service,可以注入一个模拟的Context或模拟的Application。

ActivityTestCase对Activity测试的基类

ActivityUnitTestCase对单个Activity进行测试。可以注入模拟的Context 或Application,不能注入模拟的Intent。

ActivityInstrumentationTestCase2在正常的系统环境中测试单个Activity,不能注入一个模拟的Context,但你可以注入一个模拟的Intent。可以在UI线程运行测试方法,给UI发送按键和触屏事件。

2. Instrumentation在Assert的基础上提供了两个新的断言类:MoreAsserts和ViewAsserts。

MoreAsserts类包含更多强大的断言方法,如assertContainsRegex(String, String),可以作正则表达式的匹配。

ViewAsserts类包含关于Android View的有用断言方法,如assertHasScreenCoordinates(View, View, int, int),可以测试View在可视区域的特定X、Y位置。

3. Instrumentation有一些类可以方便的创建模拟的系统对象,如MockApplication,MockContext,MockPackageManager,MockResources 等等。

4. 在android.test.annotation包里定义了几个annotation,包括

@LargeTest,@MediumTest,@SmallTest,@Smoke,和@Suppress。你可以根据自己的需要用这些annotation来对自己的测试分类。在执行单元测试命令时,可以在-e参数后设置“sizelarge”/“sizemedium”/“sizesmall”来执行具有相应标记的测试。

3)执行方法

要运行Instrumentation测试需要在Manifest文件里加入下面代码(ADT 在创建测试工程时会自动添加)

android:name="android.test.InstrumentationTestRunner"

android:targetPackage="com.android.yourpkg"

android:label="Test Unit Tests">

Instrumentation是用adb命令完成的(在ADT下直接右键点击选取"Run As->Android Junit Test"即可),支持具体到测试方法的启动,如下面的例子:A. 运行某个package下所有TestCase:

adb shell am instrument -w

com.android.foo/android.test.InstrumentationTestRunner

B. 运行某个TestCase:

adb shell am instrument -w -e class

com.android.foo.FooTest **TestRunner

C. 运行一个TestCase中的某个功能:

adb shell am instrument -w -e class

com.android.foo.FooTest#testFoo **TestRunner

D. 同时测试多个TestCase:

adb shell am instrument -w -e class

com.android.foo.FooTest,com.android.foo.FooTest2 **TestRunner 4)例子

相关文档
最新文档