`
lyunabc
  • 浏览: 529792 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

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来编写测试用例。

分享到:
评论

相关推荐

    [14本经典Android开发教程]-2-Android开发手册—API函数详解

    [14本经典Android开发教程] 2 Android开发手册 API函数详解 一 TextView的API 1 1 结构 java lang Object android view View android widget TextView 直接子类: Button CheckedTextView Chronometer DigitalClock...

    [14本经典Android开发教程]-9-Android2.3用户手册

    [14本经典Android开发教程] 2 Android开发手册 API函数详解 http: download csdn net detail cleopard 8374487 [14本经典Android开发教程] 3 Android SDK 中文开发文档 http: download csdn ...

    Android API之KeyStore 测试源代码

    Android API之KeyStore 的测试源代码

    android CameraApi的测试程序源码

    android CameraApi的测试程序源码

    Android C++高级编程: 使用NDK

     《移动开发经典丛书·Android C++高级编程:使用NDK》介绍了原生应用开发、可用的原生API以及故障排除技术的详细叙述,包括用按步骤的指导和屏幕截图以帮助Android开发人员迅速达到开发原生应用的目的。...

    [14本经典Android开发教程]-11-Android系统移植技术详解

    [14本经典Android开发教程]-11-Android系统...[14本经典Android开发教程]-2-Android开发手册—API函数详解 http://download.csdn.net/detail/cleopard/8374487 [14本经典Android开发教程]-3-Android SDK 中文开发文档 ...

    微信小程序操作android多媒体API:录音机功能源码.rar

    微信小程序操作android多媒体API:实现一个带动画效果的录音机功能源码,微信小程序 录音机,带动画,在微信开发者工具中运行本项目后,在调试一栏可看到界面UI的效果,用鼠标轻触“按住录音”按钮,画面立即显示出...

    [14本经典Android开发教程]-4-Android应用程序开发36技

    [14本经典Android开发教程]-4-Android应用程序开发36技 本书共分为4篇: ※ 第一篇:介绍应用框架概念、原理和特性。 ※ 第二篇:阐述应用框架之设计技巧。亦即,如何打造应用框架。 (注:如果你的职务是「使用」...

    [14本经典Android开发教程]-3-Android SDK 中文开发文档

    [14本经典Android开发教程]-2-Android开发手册—API函数详解 http://download.csdn.net/detail/cleopard/8374487 剩余11本稍后上传!@或直接从这里寻找@ http://download.csdn.net/user/cleopard/album @更多@ ...

    [14本经典Android开发教程]-7-Android编程入门教程

    [14本经典Android开发教程]-7-Android编程...[14本经典Android开发教程]-2-Android开发手册—API函数详解 http://download.csdn.net/detail/cleopard/8374487 [14本经典Android开发教程]-3-Android SDK 中文开发文档 ...

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    Android代码-HelloDaemon

    HelloDaemon Android 服务保活/常驻 (Android Service Daemon) 建议只在App的核心功能需要保活/常驻时使用。 本示例中使用的保活方法部分来源于下面的博客和库。...(更新:经过测试,发现只是对于AOSP/CM/国际上对Frame

    Open mobile api 测试规范

    Open mobile api的测试规范

    [14本经典Android开发教程]-8-Linux内核阅读心得体会

    [14本经典Android开发教程] 8 Linux内核阅读心得体会 读核感悟 2 读核感悟 Linux内核启动 内核的生成 2 读核感悟 Linux内核启动 从hello world说起 3 读核感悟 Linux内核启动 BIOS 5 读核感悟 Linux内核启动 setup...

    Android-RESTapi:一个简单的 Android RESTful 库,用于与 RESTful JSON API 集成

    Android-RESTapi 一个简单的 Android RESTful (REST) 库,用于与 RESTful JSON API 集成该库是作为一部分开发的。 它已经过测试并且可以与完全配合使用。安装目前没有要使用的 .jar 文件,因此您可以将这些文件复制...

    安卓专项测试 - Python篇实战视频(Android)

    4-1 如何学好Android App API接口测试? 4-10 Fiddler构造HTTP Get请求 4-11 Fiddler构造HTTP Post请求 4-12 Fiddler抓取手机上的网络数据包 4-13 为什么使用PostMan做API接口测试 4-14 工欲善其事必先利其器-...

    [14本经典Android开发教程]-5-linux Android基础知识总结

    [14本经典Android开发教程]-5-linux Android...[14本经典Android开发教程]-2-Android开发手册—API函数详解 http://download.csdn.net/detail/cleopard/8374487 [14本经典Android开发教程]-3-Android SDK 中文开发文档 ...

    Android基础教程

     《Android基础教程(第3版·修订版)》是一部关于Android开发的基础教程,采用Pragmatic系列图书一贯由浅入深、循序渐进的方式讲解了Android程序设计的核心概念和技术。书中不仅结合数独游戏开发案例形象生动地...

    深入理解Android自动化测试

    非扫描版 带书签许奔 著ISBN:978-7-111-52120-4目录本书赞誉前言第一部分 基础篇第1章 Android自动化测试基础1.1 Android自动化分析1.2 什么样的兵器最称手1.3 如何耍好你手上的兵器1.4 你了解你的兵器吗1.5...

    AndroidOpenGLESDemos:探索和测试OpenGL ES API

    AndroidOpenGLESDemos 探索和测试OpenGL ES API。

Global site tag (gtag.js) - Google Analytics