回 帖 发 新 帖 刷新版面

主题:[原创]Android开发关键技术之旅——Java程序员快速学习通道 书连载



Android开发关键技术之旅——有Java基础者的手机开发快速学习通道



针对有一定手机Java开发经验的读者,可以说本书适合现在广大的程序员。想通过学习Android的开发知识,快速积累Android的开发经验,以最快的时间快速入手,时间,是我们的最大的成本。



当当地址:http://product.dangdang.com/product.aspx?product_id=22781997




回复列表 (共20个回复)

沙发


内容简介
  《Android开发关键技术之旅(Java程序员快速学习通道)》由颜建华所著,以iPhone的发布为开端,以Android系统的全面普及为标志,新型智能手机的广泛应用宣布了新的互联网时代的到来。时至今日,看看市场上琳琅满目、满山满谷的各种品牌、各种外观、各种配置、各种功能的Android手机和设备吧,Android系统取得了巨大成功。移动互联网时代,下一个主流的开发平台和生态系统也将会围绕着这个小机器人来展开。
  《Android开发关键技术之旅(Java程序员快速学习通道)》主要面对有一定基础的Java程序员,是一本程序员写给程序员的著作。本书从手机互联网应用的角度出发,探讨了使用Android开发系统来开发Android应用的相关的各种概念、技术、过程和工具,让开发者能够了解和掌握用于开发Android网络应用程序应有的知识和技能,为他们在Android平台上实现自己的开发梦想提供坚实的基础。

板凳

第1章  Android开发概述
1.1  什么是Android
1.2  Android的发展
1.3  Android的现状
1.4  Android系统架构
1.5  手持设备应用开发的特点和原则
1.6  总结
第2章  Android应用的开发环境
2.1  Android开发环境及其组成
2.2  从零开始搭建和配置开发环境
2.2.1  操作系统配置
2.2.2  下载和安装Java SDK
2.2.3  下载并安装Android SDK
2.2.4  下载安装Eclipse
2.2.5  配置和运行Eclipse
2.2.6  安装Android Develop Tools(ADT)
2.2.7  为ADT配置Android SDK
2.2.8  安装Platform
2.2.9  配置虚拟设备(Virtual Device)
2.2.10  应用测试
2.2.11  实机调试环境
2.3  熟悉和了解Android SDK
2.3.1  Android SDK-目录结构
2.3.2  Android SDK – tools和platformtools
2.3.3  Android SDK – samples
2.3.4  Android SDK – documents
2.3.5  Android SDK – platforms
2.4  Android Develop Tools
2.4.1  Android工程模板
2.4.2  Android文件模板
2.4.3  Android 应用配置文件工具
2.4.4  Android 应用程序执行(Run…)配置
2.4.5  调试工具集 DDMS
2.4.6  应用程序用户界面视图结构 Hierarchy View
2.4.7  界面设计工具
2.4.8  Android 工具菜单
2.4.8  测试工具集
2.5  Android工具命令行
2.6  模拟器和虚拟设备
2.6.1  模拟器Emulator
2.6.2  虚拟设备配置
2.6.3  虚拟设备操作和使用
2.7  总结
第3章  Android开发基础
3.1  手持设备应用开发特点和规范
3.2  实例程序 第一步
3.3  理解Activity
3.4  认识神奇的”R”
3.5  视图布局 layout
3.6  实例应用 第二步
3.6.1  使用列表显示数据
3.6.2  创建新的Activity
3.6.3  为Activity创建布局模板
3.6.4  Activity的调用和显示
3.6.5  运行Activity
3.7  理解Intent
3.7.1  何为Intent
3.7.2  Intent的使用
3.7.3  数据的放入和取出
3.8  实例应用 第三步
3.8.1  国际化和本地化
3.8.2  业务类
3.8.3  改进的列表显示
3.8.4  改进列表事件处理
3.8.5  改进Intent数据传输
3.8.6  为DetailActivity增加返回功能
3.8.7  工具栏 (Toolbar)
3.8.8  偏好设置(Preference)
3.8.9  创建和保存微博条目
3.8.10  显示数据库记录列表
3.8.11  删除列表项目和记录
3.9  总 结

3 楼

第4章  数据存取
4.1  偏好设置(Preferences)
4.1.1  读取和写入偏好设置
4.1.2  使用PreferencesActivity
4.1.3  Preferences应用细节
4.2  文件存取
4.2.1  Android文件系统结构
4.2.2  内部文件存取
4.2.3  外部文件存取
4.2.3  其他文件的处理
4.3  Android中的数据库技术
4.3.1  关于Sqlite3
4.3.2  数据库访问的实现
4.4 Content Provider
4.4.1  Content Provider 概述
4.4.2  读取Content Provider提供的数据
4.4.3  修改Content Provider数据
4.4.3  实现Content Provider
4.5  扩展话题
4.5.1  Android应用程序组成
4.5.2  Activity的生命周期(Liftcycle)
4.5.3  应用程序状态
4.5.4  关于Bundle
4.5.5  关于Context
4.5.6  关于选项菜单(Optional Menu)
4.6  总 结
第5章  Android开发调试
5.1  Android调试技术概述
5.2  Console和LogCat
5.2.1  控制台和LogCat
5.2.1  LogCat的应用
5.2.3  Log类的使用
5.2.4  LogCat命令行
5.2.5  标准输出的重定向
5.3  DDMS
5.3.1  ADB(Android Debug Bridge,Android调试桥)
5.3.2  DDMS Perspective(DDMS透视图)
5.3.3  Devices (设备)
5.3.4  File Explorer (文件管理器)
5.3.5  Emulator Controll (模拟器控制)
5.4  调试工作流程分析
5.4.1  调试工作基本流程
5.4.2  程序示例和日志调试
5.4.3  断点设置和管理
5.4.4  调试模式下的程序运行
5.4.4  变量查看和修改
5.5  开发调试常见错误分析和处理
5.5.1  Java程序相关问题
5.5.2  Android应用程序相关的问题
5.5.3  开发环境相关的问题
5.6  总 结
第6章  服务器
6.1  Ruby On Rails
6.1.1  什么是Ruby on Rails
6.1.2  关于MVC
6.1.3  Rails的安装和配置
6.2  基于Rails的Web应用开发
6.2.1  Rails Web应用程序概述
6.2.2  模型设计
6.2.3  生成结果相关文件
6.2.4  访问过程分析
6.2.5  数据处理过程
6.2.6  应用程序配置
6.3  Web应用改进
6.3.1  JSON
6.3.2  数据获取服务
6.3.3  数据修改服务
6.3.4  安全访问控制
6.4  总 结
第7章  客户端-访问网络数据服务 (基础)
7.1  访问HTTP数据服务
7.1.1  网络访问权限
7.1.2  使用Connection方法访问服务器
7.1.3  使用Client方式访问服务器
7.2  参数设置和Post访问
7.2.1  网络访问参数
7.2.1  Get方式的参数处理
7.2.3  Post访问方式和参数设置
7.2.4  网络访问控制参数
7.3  处理响应
7.3.1  检查响应状态
7.3.2  输入响应内容
7.3.3  处理JSON对象
7.3.4  业务对象生成
7.4  总结

4 楼

第8章  客户端-访问网络数据服务(高级)
8.1  Android应用系统的安全性
8.1.1  网络应用信息安全概述
8.1.2  网络访问认证安全
8.1.3  HTTP基本认证在Android中的客户端实现
8.1.4  HTTP摘要认证在Android中的客户端实现
8.1.5  自定义HTTP Client连接认证体系设计
8.1.7  网络传输和内容安全
8.2    后台任务的执行处理
8.2.1  网络访问操作的问题和需求
8.2.2  Thread类和Runnable接口
8.2.3  线程间信息的通信
8.2.4  AsyncTask(异步任务)
8.2.5  实现任务线程池
8.2.6  改进的网络访问类
8.3  网络数据访问服务
8.3.1  Service概述
8.3.2  Android中Service的实现
8.3.3  与Service交互
8.3.4  Service启动执行
8.4  Widget(桌面小程序)
8.5  总结
第9章  测试、优化、团队开发和发布
9.1  Android应用测试
9.1.1  测试技术概述
9.1.2  Android测试框架
9.1.3  Android测试示例
9.2  程序性能优化
9.2.1  编码的性能考虑和最佳实践
9.2.2  程序执行跟踪和描绘
9.2.4  界面布局优化
9.3  团队开发
9.3.1  版本控制技术概述
9.3.2  SVN系统的安装和配置
9.3.3  使用SVN进行开发的版本控制
9.3.4  工作管理和协作
9.4  发布和部署
9.4.1  Android安装文件和过程概述
9.4.2  Android应用程序签名
9.4.3  Android应用程序分发和安装
9.5  总 结
第10章  Socket编程
10.1  Socket技术概述
10.2  示例应用程序
10.3  TCP Socket应用实现
10.3.1  TCP Socket客户端类
10.3.2  TCP Socket服务器端
10.3.3  启动和关闭TCP Socket服务器
10.3.4  TCP Socket信息发送
10.4  UDP Socket应用实现
10.4.1  UDP Socket客户端
10.4.2  UDP Socket服务器端代码
10.4.3  启动和关闭UDP Socket服务器
10.4.4  发送UDP信息
10.5  远程数据传输
10.6  总结
第11章  Android浏览器和Web视图技术
11.1  手持设备平台Web应用的发展
11.1.1  原生应用程序和Web应用程序
11.1.2  从WAP到Web
11.2  Android浏览器和WebKit
11.3  基于Web视图技术的开发
11.3.1  系统Intent方式
11.3.2  WebView方式
11.3.3  WebView事件处理
11.3.4  WebView和HTML内容的交互
11.3.5  WebView技术的应用场合
11.4  HTML5
11.4.1  HTML5概况
11.4.2  用户界面组件
11.4.3  CSS增强
11.4.4  图形绘制
11.4.5  位置应用
11.4.6  视频和音频
11.4.7  本地存储
11.4.8  Web Worker
11.4.9  Web Sockets(Web插座)
11.4.10  服务器发送事件(Server Sent Events,SSE)
11.4.11  Math ML数学描述语言
11.5  为Android设备开发Web应用程序
11.6  总结

5 楼

第12章  系统内容和硬件相关应用
12.1  示例应用程序
12.1.1  基本程序
12.1.2  列表项目数据转换
12.1.3  事件响应处理
12.2  系统基本信息
12.2.1  基本信息
12.2.2  网络类型
12.2.3  网络接口和IP地址
12.2.4  获取电话号码
12.3  内容管理和集成
12.3.1  网络访问和信息搜索
12.3.2  联系人网络访问和信息搜索
12.3.3  图片选取
12.3.4  媒体文件播放
12.4  电话相关应用
12.4.1  拨打电话
12.4.2  发送短信
12.4.3  使用模拟器进行电话和短信功能的测试
12.4.4  接收和读取短信
12.4.5  发送彩信(MMS)
12.4.6  发送电子邮件
12.5  地理位置应用
12.5.1  定位
12.5.2  地图
12.5.3  MapView
12.5.4  POI应用(Point of Interest兴趣点)
12.6  Bluttooth 蓝牙通讯技术
12.7  NFC近场通讯技术
12.7.1  NFC概述
12.7.2  Android NFC应用开发
12.7.3  高级NFC应用开发概述
12.8  传感器
12.9  总 结

6 楼

第9章  测试、优化、团队开发和发布
到这里,我们已经了解了很多Android应用开发方面的工作,下面我们会进一步讨论一些比较“高级”的课题,包括应用程序的测试、优化,然后还会接触一些关于团队开发和应用程序发布等方面的内容。之所以将这些内容放在这里讨论,是因为经过了前面的学习,我们已经对Android应用开发有了一个相对深入而全面的了解,并熟悉了Android系统的一些特点和思维模式,再来探讨这些更加深入的内容,会更加容易理解和掌握。
9.1  Android应用测试
我们这一节主要讨论在Android应用开发过程中通常是如何来开展软件测试工作的。
测试,是现代应用软件开发过程中一个非常重要的环节,它通过一套科学而系统的方法,来帮助开发者查找并且分析应用软件中的各种缺陷和错误,并进行修正和改进,最终提高软件的质量和使用的满意度。测试技术本身是一个比较复杂和系统的技术,这里不会在非常专业化的层面上讨论这个技术,而是通过常用的概念阐述和简单的案例让大家了解测试技术的基本概念、基本流程和运用。

7 楼


9.1.1 测试技术概述
这一节中我们先通过一些相关的基本术语和概念从不同的侧面来对测试技术进行初步的了解。
首先来明确一下测试的目的。虽然测试的终极目的就是提高软件质量,但具体而言,我们认为在实际测试工作的操作过程中,希望达到下面几个目的:
 检验软件的正常执行能力:
软件是否能够按照设计的要求,实现所有预期的设计目标和功能,并且在正常的操作之下,得到正常的、预料之内或者可预期的操作响应和结果。在此过程不应出现任何不可预料的异常,也不应该得到错误的数据和结果。
 检验软件的异常处理能力:
即测试软件的“容错”能力,即如果输入或者运行中间涉及到错误的数据和信息,软件是否能够“正确”的进行处理,从而不影响软件的正常运行。
 检查软件的适应性:
软件是否在各种确定或者兼容的软硬件平台上执行,或者执行过程中是否由于兼容性的问题导致各种错误和异常。
 评估软件执行的性能、稳定性和安全性:
检查软件执行的速度和效率,检验软件是否在不同的负载情况下长期稳定的正常工作,并且保证系统和信息的安全,如有没有内存泄漏、注入式攻击等常见的问题。
对于不同的测试目标,可能需要使用不同的测试方法、过程和工具。所以说,测试,也是一个独立、专业而系统的体系。下面我们来具体了解一下在软件开发过程中,测试工作是如何开展和执行的。
广义的测试可以分为静态测试和动态测试。静态测试是在不运行被测程序的情况下,仅仅通过分析或检查源程序的语法、结构、过程、接口、参数等来检查程序的正确性。找到例如参数不匹配、不适当的循环分支嵌套、不合理的递归、未使用过的变量、空指针的引用和可疑的方法调用等。静态测试结果可用于进一步的查错,并为测试用例的编写提供指导。而动态方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等要素,这个过程一般包括构造测试用例、执行程序、分析输出结果等三个步骤。现代的集成开发环境如Eclipse本身就可以很好的完成静态测试的大部分(除业务逻辑外)的静态测试工作,所以我们所说的 “测试”,通常指动态测试。
从测试的执行过程来看,还可以将测试的类型可以分为手工测试和自动化测试。
手工测试是软件测试人员人工操作软件,模拟软件在实际使用中的操作过程包括使用各种示例数据,运行软件并且观察软件在运行过程中出现的各种问题和错误等的过程。
而自动化测试则更进一步,使用测试程序来代替手工操作的过程。和手工测试相比,自动化测试需要使用测试程序(通常称为测试用例,Test Case),但这个程序并不会自动生成,而是通常需要测试人员根据测试要求进行编写,而且通常自动化测试过程是“沉默”的,它不会向真实的程序运行那样,在用户界面中显示程序运行的过程和状态并且和用户进行交互,而是将其反映在测试结果当中,比如各种运行日志和断言结果等等,这就需要测试人员对测试结果进行分析,才能得出测试的结论。
无论使用手工测试还是自动化测试,都需要测试人员根据软件应用的要求(通常有比较明确的软件开发需求、功能和过程描述等相关的开发文档),认真仔细的分析整个软件运行的过程,编写软件测试计划。在这个计划中,应当包含各个模块的操作过程和数据,包括输入、处理和输出,测试完成后,还需要编写相应的测试包括,以反馈给开发人员进行改进和修正。这个过程如图9-1所示:

[img]http://www.tu265.com/di-9d289637b54079f0224234457cda0cb3.png[/img]

8 楼


显然,手工测试的主要问题就是测试效率比较低,如果要进行全面的测试,就需要大量的计划工作、操作人员和测试时间,特别是如果程序修改,又得照样再来一遍,这样会导致软件开发成本和周期大幅度提高。而自动化测试由于是通过程序来执行测试,测试程序和过程都可以复用,对于重复性测试或者规模测试的效率更高。此外自动化测试的质量容易得到保证,只要测试测试程序编写合理,就不容易出现人为错误。但自动化测试需要测试人员编写合适的测试用例,并使用适合的模拟数据,还需要对测试结果进行分析,对测试人员的提出的要求比较高。
但实际上,手工测试和自动化应该是相互补充的,并不是所有的测试工作都适合于手工测试或者自动化测试,就需要合理的搭配,以达到更好的测试效果。
从测试的深入程度来看,还可以分为黑盒(Black Box)测试和白盒(White Box)测试。
软件的白盒测试需要对软件的过程性细节做深入细致的检查。所谓白盒,就是指将测试对象看做一个打开的盒子,并要求测试人员在明确程序内部的逻辑结构及相关信息,进行测试用例的设计或选择,并程序所有逻辑路径进行测试。然后,通过在不同的状态节点检查程序实际状态与预期状态的一致性判断其运行是否正常。因此白盒测试又称为结构测试或逻辑驱动测试。
白盒测试通常执行下列检查工作:
 测试程序模块的所有独立的执行路径;
 对所有的逻辑判为“真”或“假”的两种情况都进行测试;
 在整个循环的范围内执行循环测试;
 检测程序内部数据结构的有效性。
相对而言,软件的黑盒测试则通常在软件的接口处进行。黑盒是一个很好的比喻,它假设测试人员完全不考虑程序内部的逻辑结构和特性,只依据程序的需求分析和规格说明,来检查程序的功能是否符合其功能要求。因此黑盒测试通常被称为功能测试或数据驱动测试。
黑盒测试的主要目的是发现下列错误:
 接口能否正确的接受输入;
 程序能否输出正确的结果;
 是否有错误或遗漏的功能;
 在各种情况下是否出现初始化或终止性错误;   
 是否有接口数据结构错误
 是否有外部信息如数据库或者文件访问错误;
 能否满足性能要求;
通常白盒测试的成本较高,它需要测试人员深入了解软件运作和实现,但它更加彻底细致,并且更有利于问题的解决和程序的优化;而黑盒测试的重复性更好,能够支持将测试和开发人员进行分组,效率较高,易于组织。当然在实际测试工作中,两个也可以是相互补充的关系。
从测试的范围来看,还可以分为单元测试(Unit Test)和相对应的框架和总体测试:
框架和总体测试通常指对整个应用程序的运行进行测试,而单元测试则是一个相对具体的概念,就是对程序的某个应用程序单元来进行测试。
对于开发人员和开发过程的组织而言,单元测试是非常基本和重要的。单元测试的本质是分解复杂的测试工作,其目标是隔离程序单元并证明这些程序的单元是正确的。单元测试能够提供代码片断或者组件满足设计需求的书面约定。单元测试的好处是可以帮助开发团队在开发过程的早期就能发现问题。
单元测试可以由程序员来实施,因为它比较“内部化”,编写程序单元的开发者也很适合于编写单元测试用例代码,在这种情况下,开发人员可以在单元模块完成后就可以开展单元测试工作。同时,由于单元测试用例主要针对内部功能和接口,这样的测试工作可以在内部重复进行,并且不影响总体的开发和测试,从而大幅度缩短开发-测试-改进的工作周期。
在普通的开发过程中,单元测试是测试工作的核心,很多开发环境和工具都为单元测试提供了支持和工具,如Java的JUnit系统,就是Java开发中最常用的单元测试和测试工具。在Android系统中,也提供了这样一套类似的方法和工具,被称为Android测试框架(Testing Framework),我们在后面的内容继续讨论。

9 楼


9.1.2 Android测试框架
作为一个完善的现代化开发体系,AndroidSDK提供了一个集成的测试框架(Android Testing Framwork)可以为Android应用程序的开发测试工作的各个阶段提供全面的支持和帮助,从单元测试到框架测试。

[img]http://www.tu265.com/di-5cc12de5d587fecaa0e605c9aa24568d.png[/img]
这个测试框架(如图9-2所示)包含了一个完整的结构和一套工具集,具有以下一些关键特性:
首先,Android测试套件基于在Java开发中被广泛应用的JUnit测试技术。实际上,可以直接使用普通的JUnit系统对Android应用程序进行测试,当然在这种情况下,主要针对Java类和过程,并不能开展Android API和功能相关的测试。在这个基础上,Android 测试套件对JUnit进行了扩展,可以执行面向特定组件的测试用例,包括特定的测试用例类和辅助方法,可以用于创建模拟的对象和方法,以帮助测试人员控制组件的运行过程。常见的测试用例包括AndroidTestCase,被用于一些比较简单和通用的测试。
其次,测试相关的SDK工具已经集成在ADT中,可以从Eclipse进行执行,非常方便。当然对于其他的IDE系统,这些工具也可以通过命令行方式来执行。
SDK还提供了monkeyrunner,它是一个用Python语言编写的API测试执行程序,它包括了一个用户界面/应用程序模拟执行器,还有一个命令行工具,它可以通过向测试程序发送伪随机用户操作事件来进行UI操作过程和逻辑的测试。
一个有效的应用程序测试系统是由一系列标准测试结构、测试用例类、测试软件包和测试工程组成的。Android测试工作基于JUnit技术,通常一个Android JUnit测试是一个可执行的测试类,它包含了若干测试方法以完成测试要求,每个测试类通常都可以针对应用程序的某个部分(如Activity或者Service等等)开展测试。这些类又被称为测试用例(Test Case)或者测试套件(Test Suite)。在测试中测试用例在应用程序中是隔离而独立的。每个测试用例都是相关测试方法的容器,同时它们也有自己的一些辅助程序和方法

10 楼

在JUnit中,你可以将一个或者多个测试源文件编写到同一个类中。在Android中,也可以运用SDK的编译工具在一个Android测试包中编写一个或者多个测试源文件。在JUnit中,通常使用测试运行器来执行测试类,而在Android中,需要使用测试工具来加载测试包和应用程序包,并且执行针对于Android系统的测试运行器来加载测试用例。 Android SDK提供的用于Android测试的测试用例基础类,都继承自JUnit的TestCase和Assert类,并扩展了针对Android系统的setUp,tearDown和helper等等方法。具体包括:  AndroidTestCase(Android测试用例) 这是通用和基本的Android测试类。它继承了TestCase和Assert类,提供了JUnit标准的setUp()和tearDown() 方法以及Junit’s 断言方法。除此之外,它还提供了用于测试权限的方法,和通过清除对象引用的操作来防止内存泄漏的一些辅助方法。  针对组件的测试用例基础类(Component-Specific test cases) Android测试框架的一个重要特性是支持针对不同组件的测试。因为不同的程序组件可能对于测试的要求和控制是不同的。组件测试类还可以提供构造模拟对象的方法。Android测试可以针对下面三种Android应用组件进行测试:  Activity Testing  Content Provider Testing  Service Testing 注意,Android SDK没有单独提供对于BroadcastReceiver进行组件测试的方式。而是通过测试发送Intent对象的组件,并验证BroadcastReceiver的相应来实现测试。  应用程序测试用例(ApplicationTestCase) 可以使用这个类来测试应用程序对象的setup和teardown,这个对象可以保存针对此应用程序包中所有组件的全局状态和信息。通常这个测试用于验证在manifest文件中的元素是否设置正确。但这个测试不能用于控制应用软件包中组件的测试工作。  配器测试用例(InstrumentationTestCase) 如果需要在测试用例中使用配器的相关方法,就需要使用InstrumentationTestCase类或者其子类。 Activity test cases 类已经继承此类并且扩展了一些其他用于Activity测试的辅助方法。  断言类(Assertion classes) 因为Android测试用例类都继承自JUnit,所以是可以在其方法中直接使用其相关的断言方法来显示测试的结果的。断言方法通过可以对比测试返回结果的值和期望值返回测试结果,如果对比测试失败就会抛出AssertionException异常。使用断言比使用日志更加方便,简化了结果分析的过程,并且能够提供更好的性能。 另外,除了标准的断言类外,Android测试框架还提供了高级断言(MoreAsserts)和视图断言(ViewAsserts)。高级断言提供了一些扩展的断言方法,如assertContainsRegex(String, String)可以用于处理正则表达式匹配。而视图断言包括了对Android视图对象的处理,如assertHasScreenCoordinates(View, View, int, int) 可以测试该视图是否在屏幕上特点的位置,通常可以用于用户界面相关的测试。  模拟对象类(Mock object classes) 为了在测试过程中解决环境的问题,Android测试框架还提供了可以模拟系统对象的类,比如可以模拟Context、ContentProvider、ContentResolver和Service对象,一些测试用例类还可以提供模拟的Intent对象。它们通常被称为模拟对象(Mock Object),使用模拟对象可以把测试和系统之间隔离起来,并且降低测试过程中的依赖注入。这些类可以在android.test.mock包中找到。 模拟对象可以在测试过程中替换系统的正常操作。例如,MockContentResolver可以替换普通的resolver 框架,从而和真正的系统进行隔离。 模拟对象还可以处理依赖注入,它通过模拟某些类的子类,你可以对其只指定一些期望的功能而无需使用完整的父类。例如, MockResources 对象可以提供Resource的子类,但是在默认情况下,调用所有的方法都会抛出错误,要使用它,你可以继承该类并且重新希望提供信息的方法,来实现对Resource对象的模拟,并且减少依赖注入。 在Android中,可用的模拟对象包括:  简单模拟对象类(Simple mock object classes) 如MockApplication(应用程序), MockContext(上下文), MockContentProvider(内容提供者), MockCursor(游标), MockDialogInterface(对话框), MockPackageManager(包管理器), and MockResources(资源) ,这些类提供了简单而使用的模拟策略。通常是一些常用的系统对象。 注意: MockContentProvider 和MockCursor 是API level 8的新特性。  解算器模拟对象(Resolver mock objects) MockContentResolver可以使用自己的内容表而不是系统Content Provider提供的内容,主要用于模拟使用自定义的测试数据的情况。

我来回复

您尚未登录,请登录后再回复。点此登录或注册