简单解释一下android.test包下的其他测试类,给大家一个了解。
[b]Interfaces[/b]PerformanceTestCasePerformanceTestCase.IntermediatesTestSuiteProvider[b]Classes[/b]ActivityInstrumentationTestCaseActivityInstrumentationTestCase2ActivityTestCaseActivityUnitTestCaseAndroidTestCaseAndroidTestRunnerApplicationTestCaseInstrumentationTestCaseInstrumentationTestRunnerInstrumentationTestSuiteIsolatedContextLoaderTestCaseMoreAssertsProviderTestCaseProviderTestCase2RenamingDelegatingContextServiceTestCaseSingleLaunchActivityTestCaseSyncBaseInstrumentationTouchUtilsViewAsserts
以上列出的是android.test包下的所有接口以及类,那么简单了解一下,起码能够不盲目崇拜框架,市场上的大多数框架都是基于android.test包来实现的,如果你发现没有针对于它们来实现的,那么有可能就是有root权限的手机,或者操作系统是自己的手机反射来进行测试的,不过我也不能绝对这么说,如果有其他好玩的框架,欢迎留言,我也去研究研究,谢谢。
Interface接口
接口部分包含3个接口PerformanceTestCase、PerformanceTestCase.Intermediates、TestSuiteProvider。
PerformanceTestCase性能测试接口,也是当前某些测试开发工程师或者开发熟知的这么一个性能测试手段,需要进行性能测试的类需要实现这个接口,采用白盒代码注入的方式获取当前类的性能,这种方式不能讲测试与开发代码进行很好的分离,当前使用范围不大。不过推荐开发同学使用这种方式自测。
PerformanceTestCase.Intermediates接口,是实现PerformanceTestCase类的回调方法,用于收集相关的数据。使用方式: startPerformance (PerformanceTestCase.Intermediates intermediates),实现PerformanceTestCase的类可以直接调用startPerformance 方法。
TestSuiteProvider这个接口一般都不会直接使用,子类InstrumentationTestRunner比它好用,这个接口就是获取一下testsuite。
classes相关类
ActivityInstrumentationTestCase,这是一个废弃功能测试类,在API3之前的才可以使用,也就是android操作系统1.5版本,对当前的测试开发工程师来说,恩恩,忽略它吧。
ActivityInstrumentationTestCase2,这个是当前主流用于测试apps功能的测试类,大名鼎鼎的robotium就是基于这个类来实现的,当前这个类的底层也用时instrmentation去玩android的,这个类直接使用系统底层资源来做测试,运行在ui线程中,意思就是,你使用这个类进行测试,肯定是需要将apps运行起来的,能看见界面的。他的父类是android.test.ActivityTestCase,爷爷是android.test.InstrumentationTestCase,你看这个拼爹的时代,有个好爹,这个类就非常好用了。
ActivityTestCase,这个类其实我个人认为没有存在的必要,作为一个父亲没有做到父亲的职责,就是让集成它的儿子们属性看起来明显一点,恩,看你们集成ActivityTestCase肯定是测试Activity的,好吧,不推荐大家去使用了,它就是对爷爷instrumentationtestcase的集成,好用的功能都在instrumentationtestcase里呢,对于父亲来讲,这一代家道中落。
ActivityUnitTestCase,这个见我上一篇博客,我详细的说过。
AndroidTestCase,这个类提供了可以让我们控制context的入口,Context是什么呢,我个人理解的,如果你做过j2ee开发,我理解这个context就是application session,全局变量,在整个系统中我都能够调用它,用它来传递一些信息。并且多一个功能,我们可以理解为call,可以call一些功能,例如activity,接个广播之类的。我们可能用它不多,主要看看它有什么子类,ApplicationTestCase<T extends Application>, LoaderTestCase, ProviderTestCase2<T extends ContentProvider>, ServiceTestCase<T extends Service>,呵呵,看这些子类我们知道,父亲就为他们干了一件共同的事那就是Context,那么具体你测试什么,你得用我儿子的技能才行啊。
AndroidTestRunner,最基础的runner类,来抓取运行过程中和运行结束后的一些数据,没有具体使用过。
ApplicationTestCase,主要用來测试Application,提供了对Application类生命周期方法的基本支持,並可以支持一些dependency injection 以帮助构造Application的环境,你有你再调用了createApplication之后才能嗲用oncreate方法。这个部分需要大家对android生命周期有相关的了解。依赖注入这里,我们可以设置context对象来调用,也可以mock context对象。
InstrumentationTestCase,android底层最核心调用activity的基础里,不要求大家去直接使用它,但是需要知道它能做什么,有那些类是基于它实现的,他能够开启activity,携带intent开启activity,并发send一些命令,让手机或者虚拟机执行这些命令。看一下它的儿孙们:Known Direct Subclasses
ActivityTestCase, ProviderTestCase<T extends ContentProvider>, SingleLaunchActivityTestCase<T extends Activity>, SyncBaseInstrumentation
Known Indirect Subclasses
ActivityInstrumentationTestCase<T extends Activity>, ActivityInstrumentationTestCase2<T extends Activity>, ActivityUnitTestCase<T extends Activity>,它的儿孙们这些你应该熟知几样吧,很多功能都是从它这来的,然后进一步封装,来对android系统来发送相关的操作命令。
InstrumentationTestRunner这个类和AndroidTestRunner类似,这个类现在我们主要用作重写测试报告用的,他可以运行测试类,suite,获取类名方法名,获取到测试结果,那结果生成到eclipse,junit结果,你不喜欢看,那么很多人就重写这个类把结果写到xml文件里,哦,然后生成你想看到的报告,就是冲这来的。可以直接使用adb shell am instrument -w命令行来调用它的相关功能。
InstrumentationTestSuite这个倒是没什么,就是类junit一样的一个testsuite类,可以将测试方法作为suite,批量执行。
IsolatedContext,一个mock的Context对象,他的爷爷就是Context对象。
LoaderTestCase,这个个人没有使用过,留着以后调研一下吧
MoreAsserts,这个类提供了一些在junit中你找不到的assert方法,比较实用,推荐。
ProviderTestCase,与ActivityInstrumentationTestCase类似,已经被弃用。API3
ProviderTestCase这个类主要是来测试 ContentProvider的,ContentProvider为存储和读取数据提供了统一的接口,ContentProvider可以让应用进行数据共享,那么ProviderTestCase这个类主要是用来测试,数据读取的,它与serviceTestCase一样属于组件级别的测试。
ServiceTestCase,这个类是做androidservice测试的,可以使用intent进行传递开启service服务,服务开启后你的应用会做什么样的事情,你自己要清楚,然后针对服务器开后的相关操作来进行验证。
SingleLaunchActivityTestCase,不清楚
SyncBaseInstrumentation,不清楚
TouchUtils,一个工具类用于你方便进行拖拽,下拉,长按等。
ViewAsserts,一个关于view方面的assert方法的集合类。