android单元测试框架_第1页
android单元测试框架_第2页
android单元测试框架_第3页
android单元测试框架_第4页
android单元测试框架_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

android单元测试框架第一页,共27页。快速上手指南Java基础知识知道如何使用Eclipse(调试工具、模拟器)Android系统基础知识熟悉Android单元测试框架环境需求JDKEclipse(安装ADT插件)AndroidSDKPS百度:在Windows下搭建Android开发环境第二页,共27页。目录初始Android系统Junit与Android框架Instrumentation

TestCase类项目实践第三页,共27页。Android系统

1、完全使用Java语言编写;2、运行在AndroidDalvik虚拟机之上;3、它通过JavaJNI接口调用本地库的接口。第四页,共27页。Android系统—四大组件

Activity:每个屏幕就是一个活动;通过意图(Intent)对象激活;

完整生命周期:onCreate()到onDestroy()可见生命周期:onStart()到onStop()前景生命周期:onResume()到onPause()第五页,共27页。Android系统—四大组件

Service:

在后台运行,用于处理长时间任务而影响前台用户体验的组件;一个活动,可以启动后台服务,也可以绑定到一个后台服务;通过意图(Intent)对象激活;AstartedserviceAboundservice第六页,共27页。Android系统—四大组件

BroadcastReceive广播接收组件:广播接收组件是用来响应系统层面的广播通知的组件;通过意图(Intent)对象激活;生命周期:为从回调onReceive()方法开始到该方法返回结果后结束,大概10秒左右;ContentProvider内容提供组件:用来管理应用的可共享部分的数据。应用可以将数据存储在文件系统、SQLite数据库、网络或任何一个应用可以访问的永久存储设备。第七页,共27页。目录初始Android系统Junit与Android框架Instrumentation

TestCase类项目实践第八页,共27页。Junit与Android框架

junit测试类库和android中单元测试类库:Android测试环境的主要特征:可以访问Android系统对象。Instrumentation框架可以控制和测试应用程序。运行单个test或testsuite的工具,带或不带Instrumentation。支持以Eclipse的ADT插件和命令行方式管理Test和Test工程。

在这些包中最为重要的是:

junit.framework、

android.test,其中前者是JUnit的核心包,后者是AndoidSDK在Junit.framework的基础上扩展出来的包(未实现参数化)。SDK功能说明junit.frameworkJUnit测试框架junit.runner实用工具类支持JUnit测试框架android.testAndroid对JUnit测试框架的扩展包android.test.mockAndroid的一些辅助类第九页,共27页。Junit与Android框架

junit.framework:第十页,共27页。android.test包:第十一页,共27页。AndroidTestCase类

AndroidTestCase类

继承自JUnit的TestCase,不能使用Instrumentation框架。但这些类包含访问系统对象(如Context,最主要的功能是加载和访问资源)的方法。使用Context,你可以浏览资源,文件,数据库等等。基类是AndroidTestCase。子类有:ApplicationTestCase——测试整个应用程序的类。它允许你注入一个模拟的Context到应用程序中,在应用程序启动之前初始化测试参数,并在应用程序结束之后销毁之前检查应用程序。ProviderTestCase2——测试单个ContentProvider的类。因为它要求使用MockContentResolver,并注入一个IsolatedContext,因此Provider的测试是与OS孤立的。ServiceTestCase——测试单个Service的类。你可以注入一个模拟的Context或模拟的Application(或者两者),或者让Android为你提供Context和MockApplication。第十二页,共27页。InstrumentationTestCase类

InstrumentationTestCase类继承自JUnitTestCase类,并可以使用Instrumentation框架,用于测试Activity。使用Instrumentation,Android可以向程序发送事件来自动进行UI测试,并可以精确控制Activity的启动,监测Activity生命周期的状态。基类是InstrumentationTestCase。它的所有子类都能发送按键或触摸事件给UI。子类有:

ActivityTestCase——Activity测试类的基类。SingleLaunchActivityTestCase——测试单个Activity的类。它能触发一次setup()和tearDown(),而不是每个方法调用时都触发。如果你的测试方法都是针对同一个Activity的话,那就使用它吧。SyncBaseInstrumentation——测试ContentProvider同步性的类。它使用Instrumentation在启动测试同步性之前取消已经存在的同步对象。ActivityUnitTestCase——对单个Activity进行单一测试的类。使用它,你可以注入模拟的Context或Application,或者两者。它用于对Activity进行单元测试。不同于其它的Instrumentation类,这个测试类不能注入模拟的Intent。ActivityInstrumentationTestCase2——在正常的系统环境中测试单个Activity的类。你不能注入一个模拟的Context,但你可以注入一个模拟的Intent。另外,你还可以在UI线程(应用程序的主线程)运行测试方法,并且可以给应用程序UI发送按键及触摸事件。第十三页,共27页。目录初始Android系统Junit与Android框架Instrumentation

TestCase类项目实践第十四页,共27页。Instrumentation

TestCase类

Android测试环境的核心是一个Instrumentation框架:运行ActivityManager,使用Instrumentation框架启动和控制TestRunner;TestRunner反过来又使用Instrumentation来关闭任何主程序的实例;启动测试程序及主程序,在同一个进程中;确保测试程序与主程序间的直接交互;第十五页,共27页。InstrumentationTestCase类

publicclassInstrumentation

TestCaseextends

TestCase

knownDirectSubclassesActivityTestCase,ProviderTestCase<T

extends

ContentProvider>,SingleLaunchActivityTestCase<T

extends

Activity>,SyncBaseInstrumentationknownIndirectSubclassesActivityInstrumentationTestCase<T

exends

Activity>,ActivityInstrumentationTestCase2<T

extends

Activity>,ActivityUnitTestCase<T

extends

Activity>AndroidDevelopers网址/intl/zh-cn/reference/android/test/ActivityInstrumentationTestCase.html第十六页,共27页。Instrumentation

TestCase类

PublicMethodsInstrumentationgetInstrumentation()得到当前case的instrumentation对象voidinjectInstrumentation(Instrumentation

instrumentation)将instrumentation对象注入到当前case中.该方法会在setup方法中被调用final<T

extends

Activity>TlaunchActivity(String

pkg,

Class<T>activityCls,

Bundle

extras)启动activityfinal<T

extends

Activity>TlaunchActivityWithIntent(String

pkg,

Class<T>activityCls,

Intent

intent)启动一个带有特殊intent的activityvoidrunTestOnUiThread(Runnable

r)在UiThread线程中启动casevoidsendKeys(String

keysSequence)发送键盘事件,从字符串里提取事件的标识,每个事件以空格拼接voidsendKeys(int...keys)发送一系列的keycode值,代表一系列的键盘事件voidsendRepeatedKeys(int...keys)参数的形式为点击的次数n,键盘事件keycode.例如(2,KEYCODE_MENU)按2次菜单键第十七页,共27页。InstrumentationTestCase类核心Code:启动待测应用并打开待测的activity1.设置用户名文本框具体输入焦点;2.因为这段代码需要操作界面的控件,因此需要运行在待测应用的线程中,而不是测试用例的线程中;3.只需要将要在UI线程上执行的代码作为参数传入runOnUiThread函数里就可以了,代码块是放在Runnable匿名对象的run()函数里输入手机号码输入密码hong123第十八页,共27页。Instrumentation

TestCase子类

--ActivityTestCase

publicabstractclassActivityTestCaseextends

InstrumentationTestCase

ProtectedMethodsActivity

getActivity()获得Activity的值voidscrubClass(Class<?>testCaseClass)在tearDown方法执行时,调用一系列的TestCase接口,为了擦除一些类变量voidsetActivity(ActivitytestActivity)设置Activity值第十九页,共27页。InstrumentationTestCase子类

--ActivityUnitTestCase

publicabstractclassActivityUnitTestCase

extends

ActivityTestCase

通常用来测试单独Activity,用于Activity的单元测试。在启动被测试的Activity之前,你可以Inject一个假的Context或是Application,使用这个Mock的Context中一个隔离环境中运行被测试的Activity。在setUp中,创建了一个MockIntent对象mStartIntent用于测试Activity第二十页,共27页。InstrumentationTestCase子类

--ActivityUnitTestCase

PublicMethodsTgetActivity()intgetFinishedActivityRequest()得到finishActivity(int)中传入的参数值。如果返回-1代表没完成intgetRequestedOrientation()得到setRequestedOrientation(int)中传入的值。

IntentgetStartedActivityIntent()得到startActivity(Intent)

or

startActivityForResult(Intent,int)中intent的值;intgetStartedActivityRequest()得到startActivityForResult(Intent,int)中的参数值booleanisFinishCalled()是否完成调用,若调用了

finish(),

finishFromChild(Activity),or

finishActivity(int)方法,该方法将收到通知voidsetActivityContext(Context

activityContext)设置上下文对象voidsetApplication(Application

application)设置Application对象第二十一页,共27页。InstrumentationTestCase子类

--ActivityInstrumentationTestCase2

publicabstractclassActivityInstrumentationTestCase2extends

ActivityTestCase通常用于多个Activity的功能测试,它使用正常的系统框架来运行Activity(使用应用程序本身),并使用正常系统Context(非Mock)来测试Activity的功能。允许你创建一些MockIntent用来测试Activity的响应。*这种TestCase不允许使用Mock的Context和Application对象测试,也就是说你必须使用和应用程序实际运行的环境来测试。PublicMethodsTgetActivity()得到Activity对象voidsetActivityInitialTouchMode(booleaninitialTouchMode)设置触摸模式开关,在getActivity()之前调用;voidsetActivityIntent(Intent

i)设置intent对象,在getActivity()之前调用;第二十二页,共27页。InstrumentationTestCase子类

--ActivityInstrumentationTestCase2核心Code:关闭待测应用的触控模式,以便发送按键事件;这个操作必须在调用getActivity()之前调用启动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论