Android单元测试类及其关系

官方的单元测试使用了Junit测试框架,也就是JunitFramework,下面有TestCase这个类,这个类是Android官方sdk的测试基类, 在TestCase这个类的基础上Android又扩展了一个叫AndroidTestCase的类,这个类在原来JunitTestCase的基础上又扩充了一些Android系统特性的一些属性,主要包含ApplicationTestCase、ServiceTestCase、ProviderTestCase2几个主要的子类。其中ApplicationTestCase是测试整个应用程序的类,允许注入一个模拟的Context到应用程序中,在应用程序启动之前初始化测试参数,并且在应用程序结束之后销毁它。ServiceTestCase是用来测试单个service的类,可以注入一个模拟的Context,也就是上下文,或者模拟的Application,或者让Android提供Context或者MocaApplication这样的方法。ProviderTestCase2是测试单个ContentProvider的一个类,这个测试类的测试是与操作系统孤立的,这样一些面向Android组件的测试类。在Android主要的组件中并没有包含Activity这样主要的组件,Activity其实使用了Instrumentation的测试框架来实现的,也就是InstrumentationTestCase这个类,InstrumentationTestCase这个类继承也是从JunitTestCase类继承过来的,在这个类中,可以使用Instrumentation的测试框架来测试Activity。使用Instrumentation Android就可以向程序发送事件来自动化的进行UI的测试并且可以精确的控制Activity的启动,监测Activity的生命周期。InstrumentationTestCase也有几个子类,其中SingleLaunchTest Case是用来测试单个Activity的类,能够触发一次Setup、一次Tadm。而不是每个方法调用的时候都触发。这个主要是针对单个Activity的一个测试类。另外一个就是ActivityTestCase,这个类又有两个子类:ActivityInsumentationTestCase2和ActivityUnitTestCase,

ActivityUnitTestCase是对单个Activity进行单一测试的类,支持注入模拟的Context或者Application,用于对Activity进行单元测试的,不同于其他的Instrumentation的类,它不能注入模拟的Intent。ActivityInsumentationTestCase2,这是一个在正常的系统环境中来测试Activity的类,它可以注入一个模拟的Intent,不同于ActivityUnitTestCase,可以在UI线程来运行测试方法,并且可以给应用程序的UI来发送按键、触摸的事件。ActivityInsumentationTestCase2其实还有一个ActivityInsumentationTestCase这样的类,已经被官方废弃了,目前是使用的ActivityInsumentationTestCase2这样的测试类,这也是在使用Insumentation测试框架的时候最经常使用的一个测试类。

posted @ 2017-03-28 11:15  lxszero  阅读(976)  评论(0编辑  收藏  举报