Android程序测试(2)——Activity测试

原创 2012年03月22日 10:54:11

Content Provider测试、Service测试相比,Activity测试尤其离不开Android的测试框架(instrumentation framework),这是因为Android中的activities有着复杂的生命周期,而这些生命周期的各个阶段都是基于回调方法的,而这些方法只能由Android的测试框架来直接调用,也就是说,在一个程序中,向UI发送事件的唯一方法就是通过Android的测试框架。

本文将根据官方文档,来介绍一下怎样进行activities测试。


在开始之前,有必要介绍一下与activity测试相关的类:

InstrumentationTestCase,该类是我们进行activities测试的基类,主要就是用来为我们进行activities测试使用的测试用例(test case)的子类提供测试instrumentation,具体对于activity测试,这个基类主要提供了如下的功能:

Activity的生命周期控制:通过InstrumentationTestCase提供的instrumentation,我们可以使用测试用例类来对要测试的activity进行startpausedestroy

依赖注入(dependency injection):Instrumentation允许我们创建和使用诸如ContextApplication等的mock system objects来运行要测试的activity。这样做的最大好处就是可以控制测试环境,并且让要测试的activityproduct环境相隔离。另外我们还可以自己写intent,并通过这些intent来启动activity

UI交互:通过instrumentation,我们可以直接向要测试的activityUI发送按键和触屏事件。

通过继承TestCaseAssertactivity测试类也提供了JUnit测试框架。其中两个主要的测试子类是:ActivityInstrumentationTestCase2ActivityUnitTestCase

ActivityInstrumentationTestCase2是被设计用来对一个程序中的一个activity或者多个activities进行功能性的测试。而被测试的activity通过使用标准的系统Context运行在独立的测试程序实例中,并且我们可以向这写activity来发送模拟的intent,但我们并不能模拟Context或者activity所在的Applications

ActivityUnitTestCase这个类主要用来在一个隔绝的环境中来测试一个单独的activity。在启动这个activity之前,我们可以注入一个模拟的Context或者Application,但我们不能向这个被测试的activity发送模拟的intents

MockApplication主要用来帮助控制测试环境,只有在使用ActivityUnitTestCase这个测试用例类的时候才可使用。

ViewAsserts,主要用来定义断言(assertion


下面是进行activity测试的具体过程:

首先,根据SDK安装目录中的Spinner范例,新建一个android工程SpinnerActivity,作为被测试的工程。然后新建一个用于测试SpinnerActivity的测试工程,取名为SpinnerActivityTest,包名为SpinnerActivity的包名加上“.test”,测试的target选择SpinnerActivity,关于如何创建一个工程的测试工程可以参看:

http://blog.csdn.net/yaolingrui/article/details/7360101

还有一种创建测试工程的方法就是:在创建被测试工程的时候同时创建测试工程,这是推荐的创建过程,这一部分可以参看官方文档中的相关部分,官方文档为:

http://developer.android.com/resources/tutorials/testing/activity_test.html 

新建好测试工程之后,测试工程中将搭建起了测试的基本框架,在测试工程的AndroidManifest.xml文件中,将为我们自动添加上相关的测试信息,包括指定被测试的程序,和使用android.test.runner类库等。

在创建好测试工程之后,然后,就是在测试工程中创建test cast类,具体就是先创建一个test case的类文件,然后在这个类文件中添加test case类构造方法、set up方法,添加初始条件测试、UI测试和状态管理测试:

创建类文件:名为SpinnerActivityTest ,继承自android.test.ActivityInstrumentationTestCase2<SpinnerActivity> 

添加构造方法:指定要测试程序的包名和main activityclass,这主要是用来指定要测试的applicationactivity

添加testUp()方法:该方法在每次测试之前都会被调用,主要用来初始化测试环境,包括初始变量等,关于这方面,还可以添加testDown()方法,该方法将在每次测试结束之后调用。注意要调用setActivityInitialTouchMode(false) 方法,该方法是用来关闭模拟器或是及设备的touch mode,如果不关闭的话,当测试工程的测试方法向程序发送key事件的话,这些调用将会被忽略。

添加初始条件测试:testPreConditions(),主要用来确保要被测试的程序被正确的初始化。

添加UI测试:用来向要被测试的UI,发送key事件。

添加状态管理测试

再然后就是运行这个测试工程,查看测试结果。注意选择Run as>Android JUnit Test,这里只是一个简单的流程介绍,具体内容可参看官方文档:

http://developer.android.com/resources/tutorials/testing/activity_test.html 

Android单元测试-对Activity的测试

前提概要 上一篇文章已经介绍了单元测试的作用和简单示例,如果不了解的读者可以先阅读上一篇 Android单元测试-作用以及简单示例。 这篇文章主要介绍常见的Activity中的测试。 对Ac...
  • Double2hao
  • Double2hao
  • 2017年08月15日 15:59
  • 900

[Android笔记一]手动创建Activity

打开eclicse,创建android工程。【file】-【new】-【android application project】 一路next,注意在第二步,取消【create activi...
  • a191030148
  • a191030148
  • 2015年04月02日 16:37
  • 8276

Android Studio系列-Activity单元测试

前言上一篇讲的是如何在Android Studio中进行Junit单元测试,这篇来简单记录一下如何针对Activity进行单元测试。新建一个项目我这里新建一个UnitTestDemo项目新建Login...
  • wwj_748
  • wwj_748
  • 2016年02月22日 18:16
  • 4710

android-Junit测试单个activity一

这两天没事看了点跟安卓测试有关的文章,发现国内手机测试资料并不多。但是英文看不很懂,所以就先写点基础的测试代码做为记录吧。希望国内更多大神分享手机测试经验。我也不知道什么时间开始就喜欢上了测试,那种喜...
  • wangbin_learn
  • wangbin_learn
  • 2016年04月20日 14:27
  • 1799

Android中的组件安全漏洞介绍和检测

首先我们介绍下我们常见的Android的activity组件, Activity是Android四大组件之一,它用于展示界面。Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成...
  • nextdoor6
  • nextdoor6
  • 2016年08月22日 10:44
  • 3536

Android自动化测试之appium的使用

appium Appium是一个开源的,适用于原生或混合移动应用应用( hybrid mobile apps)的自动化测试平台,可以非常快捷的为iOS和Android移动平台创建功能自动化测试用例。...
  • kittyboy0001
  • kittyboy0001
  • 2014年11月07日 15:48
  • 6175

Activity 生命周期 ——各种情况测试

首先上个官方图:http://developer.android.com/reference/android/app/Activity.html 程序两个Activity: ...
  • qiantujava
  • qiantujava
  • 2014年03月21日 14:54
  • 2393

性格色彩测试android程序开发之六--activity界面

在该activity界面要想是的文本有12种。因为有四种颜色,而每种颜色都含有三种显示的信息。另外TextView.setText()方法设置为本时,不会保留文本的格式,而是把所有的文本堆在一起。为了...
  • logan676
  • logan676
  • 2012年04月19日 14:08
  • 531

Android——通过案例代码测试Activity的整个生命周期

在Activity创建、可视、隐藏、重新可视、销毁等过程中,我们有时候需要做一些特殊处理,到底应该在Activity的哪个函数中进行处理操作呢?这就是今天我要讲的。...
  • yanweju
  • yanweju
  • 2017年05月16日 11:21
  • 97

Android安卓——Activity组件代码测试生命周期(续)

经过之前对安卓中Activity组件的学习,可以在理论上明白Activity的作用和用法。 本次的学习主要是Activity的生命周期运行情况的实践。通过实际的系统调用情况来确定生命周期的流程。...
  • Deniece_X
  • Deniece_X
  • 2017年11月11日 20:19
  • 50
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android程序测试(2)——Activity测试
举报原因:
原因补充:

(最多只允许输入30个字)