Android测试教程(6):测试Activity

Activity的测试非常依赖于Android的Instrumation 框架,和Android其他组件不同的是,Activity具有复杂的生命周期回调 函数(如onCreate, onStart 等) ,通常情况下除通过Instrumation 接口外不能直接调用这些回调函数。

测试Activity的基本测试类为InstrumentationTestCase,它提供了Instrumentation接口给TestCase的子类。 为了支持 Activity测试,InstrumentationTestCase提供了下面功能:

生命周期控制: 使用Instrumentation,你可以启动,暂停,中止被测试的Activity。

Dependency Injection : Instrumentation允许创建一些Mock对象如Context,Application来帮助测试Activity,从而帮助 你控制测试环境并和实际的应用的其他部分隔离开来。你也可以定制一些Intent以启动Activity。

用户界面交互: 你可以使用Instrumentation向UI发送按键和触摸事件。

下面几个为主要的用于测试Activity由TestCase派生而来的测试类:

ActivityInstrumentationTestCase2 通常用于多个Activity的功能测试,它使用正常的系统框架来运行Activity(使用应用 程序本身),并使用正常系统Context (非Mock)来测试Activity的功能。 允许你创建一些Mock Intent 用来测试Activity的响 应。要注意的是,这种TestCase不允许使用Mock的Context和Application对象测试,也就是说你必须使用和应用程序实际运行的 环境来测试。

ActivityUnitTestCase 通常用来测试单独Activity。在启动被测试的Activity之前,你可以Inject一个假的Context或是 Application ,使用这个Mock的Context中一个隔离环境中运行被测试的Activity。通常用于Activity的单元测试,而不和 Anroid系统进行交互。

SingleLaunchActivityTestCase 用于测试单个Activity,和ActivityUnitTestCase不同的是,它只运行setUp 和tearDown 一次,而不是在运行testCase 中每个Test Method前后运行setup 和tearDown ,它可以保证运行多个测试之间fixture 不会被 重置,从而可以用来测试一些有关联的方法。

本篇和后面几篇介绍Activity,Service,Content Provider 测试的基本概念和相关类,之后则结合ApiDemo->Tests 为 例具体介绍这些类的用法。

查看全套教程:http://www.bianceng.cn/OS/extra/201301/35252.htm

时间: 2024-11-03 23:14:52

Android测试教程(6):测试Activity的相关文章

Android测试教程

一.  测试项目    Android的编译和测试工具需要测试项目组织符合预订的结构:分别为Test case 类,Test case 包以及测试项目. JUnit 为Android的测试的基础,一般来说,一个JUint测试为一个用来测试一个应用某一部分的语句. 你可以将多个测试Test方法组织起来构成一个测试用例(Test case),多个测试用例可以构成Test Suites . 每个Test方法相对独立,一个测试类Test class包含一组相关的Test 或其它辅助方法. 在Androi

Android测试教程(9):ApplicationTestCase示例

前面介绍了Android测试的一些理论知识,从本篇开始的几篇将结合ApiDemoTest示例来介绍Android测试的实例.在此之前可 以参照Android测试教程(3):测试项目 创建ApiDemos->tests 测试项目,本项目测试用来测试ApiDemos,主要目的是介绍 Android测试框架的使用方法. 当然要测试ApiDemos,事先要创建好项目ApiDemos.下图显示了创建好ApiDemos- >Tests后,ApiDemos->Tests中所含的Java类: Andro

Android测试教程(5):第一个测试项目HelloWorldTest

本例介绍创建一个测试项目的一般步骤和编写测试用例的基本方法. 为简单起见,创建一个HelloWorld应用,带有一 个Greeting类,其定义如下: public class Greeting { private String name; public Greeting(String name){ this.name=name; } public String getGreetings(){ return "Hello," +name; } } 测试项目打算来测试这个Greeting

Android开发与测试教程

Android简明开发教程一:概述 Android简明开发教程二:安装开发环境 Android简明开发教程三:第一个应用Hello World Android简明开发教程四:Android应用基本概念 Android简明开发教程五:Activities Android简明开发教程六:用户界面设计 Android简明开发教程七:Intents和Intent Filters Android简明开发教程八:引路蜂二维图形绘制实例功能定义 Android简明开发教程九:创建应用程序框架 Android简

Android测试教程(16):monkeyrunner简介

如果你需要实现自动测试,Android的monkeyrunner 工具可以帮助你实现自动测试,它提供了一组API可以用来控制Android设备或模拟器,使用monkeyrunner,你可以编写Python 程序来安装Android应用或是测试包,运行应用或测试,发送按键消息,并可以截屏,然后保存在计算机中.monkeyrunner 主要目的是用来在应用程序或框架层次来测试应用程序或运行单元测试包,但你也可以用作其它目的. monkeyrunner 工具包不同于UI/Application Exe

Android测试教程(4):测试相关API

Android的测试框架相关的API主要定义在三个包中: android.test 用于编写Android测试用例 android.test.mock 定义了方便测试用的测试"桩"类 android.test.suitebuilder 运行测试用例的Test Runner类 Android 测试API 是基于JUnit 扩展而来,并添加了与Android平台相关的测试API. JUnit 你可以直接使用 JUnit中相关API编写一些和平台无关的测试用例(基于TestCase), An

Android测试教程(2):测试基础

Android测试框架(Android Testing Framework)为Android开发环境的一个组成部分,可以用来测试Android的各个方面,从 单元测试到框架测试到UI测试等. 其主要功能有: Android测试框架基于JUnit,因此可以直接使用JUnit 来测试一些与Android平台不是很相关的类,或者使用Android的JUint 扩展来测试Android组件,如果你刚开始接触Android 测试,可以先从AndroidTestCase写一些通用的测试用例,然后再写较复杂

Android测试教程(1):概述

测试也是开发过程中一个重要组成部分,Android开发环境集成一个测试框架可以用来测试Android应用的各个方面,单元测试,UI测试等. 本教程基于Android 开发教程英文版. 基本概念包括 Android测试的基础知识 Activity Testing 侧重于Activity的测试,介绍了如果使用Instrumentation 在正常Activity生命周期之外来控制Activity,然后测试Activity的特定的功能和测试UI的一些技巧. Content Provider Testi

Android测试教程(12):ServiceTestCase示例

ServiceTestCase 为测试Service提供了一个可控的测试环境,它提供对Service 生命周期的基本支持,并可以通过注入一些 依赖对象来控制测试环境以便测试Service. ServiceTestCase的类继承如下图所示: Service Lifecycle 支持, 每个Service运行 都遵循一定的顺序(生命周期方法),ServiceTestCase提供下面方法来支持对Service生命周期方法 的测试: 每个测试方法调用之前首先会执行setUp 方法,setUp 的基本实

Android测试教程(3):测试项目

Android的编译和测试工具需要测试项目组织符合预订的结构:分别为Test case 类,Test case 包以及测试项目. JUnit 为Android的测试的基础,一般来说,一个JUint测试为一个用来测试一个应用某一部分的语句. 你可以将多个测试Test方法组 织起来构成一个测试用例(Test case),多个测试用例可以构成Test Suites . 每个Test方法相对独立,一个测试类Test class 包含一组相关的Test 或其它辅助方法. 在Android平台上,你可以使用