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), Android 测试API中提供了一个TestCase的子类 AndroidTestCase ,可以用来编写一些Android相关的对象的测试用例,AndroidTestCase 支持一些和平台相关的 setup,teardown 以及setup 方法。

你也可以直接使用JUnit 的Assert 方法 显示测试结果,这些Assert方法可以通过比 较预期的值和实际的值,如果不同可以排除异常。Android 测试API扩展了一些Assert方法用于支持和Android平台相关的比较。

要注意的是,Android 测试API支持JUnit 3 代码风格,而不支持JUnit 4 代码风格,也只能使用 InstrumentationTestRunner 来运行测试用例。

Instrumentation

Android 的Instrumentation 提供了一些“钩 子”方法连接到Android操作系统中,可以独立控制Android组件(Activity,Service等)的生命周期,并可以控制Android如何 调用一个应用。

在通常情况下(普通的Android应用),Android的activity,Service等的生命周期是由
Android 操作系统来控制的。 比如一个Activity 的生命周期开始于onCreate (由某个Intent激活),然后是onResume. 可以参见 Android简明开发教程五:Activities。 应用程序本身无法直接控制这些生命周期状态的切换。但使用Instrumatation API时你 可以直接调用这些方法。

Instrumentation API 也可以支持强制某个应用和另一个已经在运作的应用运行在同一个进程 中,这在通常的情况下是不可能实现的。

使用Instrumentation API 你可以直接调用Activity或是Service的生命周期回 调函数,从而可以让你运行一步一步的运行Activity或是Service的生命周期函数。如下例显示了如何使用Instrumentation API 来测试Activity 保持和恢复State。

// Start the main activity of the
// application under test
mActivity = getActivity();

// Get a handle to the Activity object's
//main UI widget, a Spinner
mSpinner
= (Spinner)mActivity
 .findViewById(com.android.example.spinner.R.id.Spinner01);     

// Set the Spinner to a known position
mActivity.setSpinnerPosition(TEST_STATE_DESTROY_POSITION);     

// Stop the activity - The onDestroy()
//method should save the state of the Spinner
mActivity.finish();     

// Re-start the Activity - the onResume()
//method should restore the state of the Spinner
mActivity = getActivity();     

// Get the Spinner's current position
int currentPosition = mActivity.getSpinnerPosition();     

// Assert that the current position is the
//same as the starting position
assertEquals(TEST_STATE_DESTROY_POSITION, currentPosition);

其中关键的一个方法是getActivity(),只有调用 getActivity()后被测试的activity才会启动。此外Instrumentation API允许把测试项目和被测试的应用项目运行到同一个进程 中,从而在测试代码中可以直接调用被测试应用的方法和访问其成员。

Test case 相关类

Android提供了多个由 Testcase或Assert派生而来的子类以支持Android平台相关的setup,teardown 和其它辅助方法。

AndroidTestCase 为一 Android平台下通用的测试类,它支持所有JUnit的Assert方法和标准的setUp 和tearDown 方法,并可以用来测试Android permission 。

组件相关的测试类如测试activity, Content provider ,Service 相关的测试类,Android没有提供单独 的用来测试BroadcastReceiver 的测试类,而是可以通过发送Intent对象来检测Broadcast Receiver的反应结果来测试 BroadcastReceiver。

ApplicationTestCase 可以用来测试Application 对象。

InstrumentationTestCase 如果 你要使用Instrumentation API,那么你必须使用InstrumentationTestCase或其子类。

Assertion classes

Android测试中可以使用JUnit中提供的Assert方法来显示测试结果。除此之外,Testing API还提供了 MoreAsserts 和ViewAsserts 类。其中MoreAsserts支持更多的比较方法包括RegEx(正则)比较等。ViewAsserts 可以用来校验 UI View。

Mock object classes

android.test.mock 包中定义一些测试“桩”类,如MockApplication, MockContentProvider ,MockContext,MockCursor, MockPackagManager等用例帮助测试。

后面将具体介绍如何使用这些 API来编写测试用例。

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, spinner
, api
, android平台
, 测试
, instrumentation
, instruments
, 方法
, android spinner
, android测试
, 方法系统测试android
, The
, android正则表达式
getActivity()
,以便于您获取更多的相关知识。

时间: 2024-11-08 19:09:12

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

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测试教程(7):测试Content Provider

Content Provider 为不同的应用访问数据提供了统一的接口,本篇介绍Android测试包中用于测试Content Provider 的相关 知识. Android 测试包中用于测试Content Provider的基本类为ProviderTestCase2, 允许你在一个隔离环境下来测试 Content Provider. 并提供了一些Mock类如IsolatedContext ,MockContentResover 来辅助测试. 和其它测试一样,对 于Content Provide

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

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

虚拟机-Android Studion (AS)相关版本对Project影响测试结论,亟盼大牛相助

问题描述 Android Studion (AS)相关版本对Project影响测试结论,亟盼大牛相助 这个问题我在一周内测试和各种网站查找资料,至少累计16小时,非常苦闷! 这个Project简单,来源于陈老师的一本书. App启动后,点击{登陆} (pic 1), 应该显示 Pic3, 但我这里显示 Pic2 . 我开始是 一行行自己手动输入的, 恐怕有错, 找陈老师给了源代码Copy各个 .xml, .java, 但是结果都相同. 我 在 AS里 New>import 陈老师的Project

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

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