我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android测试驱动开发实践

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android测试驱动开发实践

  在Android应用开发中,相信很少有人在坚持先由设计人员做完整的概要设计 、详细设计,然后交给程序员进行编码实现了。通常是在有一个大体框架的情况下,开始进行具体编码开发了。在这种情形下,开发速度可以有很大的提高,但是终代码质量却不可避免的降低了。如何能既保持开发速度,同时又能保证开发质量呢?相信测试驱动开发是一种比较可行的开发方法学。   测试驱动开发首先通过设计测试用例,对从用户需求到方法接口进行细化,在构想这些测试用例的过程,是站在使用者角度上来思考系统的过程,而传统方法中设计人员通常是站在技术人员的角度来思考问题,两者比较,显然测试驱动开发更有助于开发出更符合用户需求的产品,同时开发出高复用性代码。   测试驱动开发先写测试,这样保证了充分考虑到了方法使用者需要,可以使方法更加合理。接下来进行代码开发,以尽可能短的时间通过测试用例,在这个过程中暂时忘掉OO和设计模式吧。当通过测试用例之后,我们再回过头来审视我们的代码实现,再去除类间依赖关系,使用恰当的设计模式,这比在开始阶段凭空想象要好得多。反复上述过程,自然可以得到质量更高的代码和系统。   然而,在Android系统下,进行测试驱动开发又增加了额外的难度,怎样对Activity、Provider、Service、Broadcaster等进行单元测试,是一个必须要解决的问题,下面我们以一个实际系统的开发,来看一看怎么解决这一系列的问题。   进行测试驱动开发,首先要做的是建立一个真正可运行的骨架系统,做Android下的测试驱动开发也不例外。   先建立一个Android工程,这里以mhcs为例,采用Eclipse向导,建立该工程。假设这个工程在用户第一次使用时,需要显示三个介绍页面,用户在一张一张划过之后,才开始使用正常功能。接下来我们以这个功能为例,详细描述一下在Android下怎样进行测试驱动开发。   首先,准备三张介绍图片,放入res/drawable目录下。我们定义FlipIntroActivity类来处理用户的划动操作及介绍图片显示。由于我们要在用户第一次运行时才向用户显示介绍页面,因些需要保存用户是否第一次使用系统的信息。我们利用Application的子类AppPreferences来管理应用所需的所有信息。   这时我们需要完成的功能很清楚了,程序在第一次运行时显示介绍页面,而之后的运行中,不显示介绍页面。是否显示介绍页面,由AppPreferences类来管理。   下面在Eclipse里建立测试工程,选择新工程类型为Android Junit Test工程,同时选择上面建立的工程作为被测试工程。   好了,小可运行骨架系统已经建立好了,下面可以进入正式的测试驱动开发流程了。   首先写测试用例:新建类AppPreferencesTest,由于被测试类AppPreferences是Application的子类,因此AppPreferencesTest类需要继承ApplicationTestCase

public class AppPreferencesTest extends ApplicationTestCase<AppPreferences> { public AppPreferencesTest(Class<AppPreferences> applicationClass) { super(applicationClass); } }
  我们首先测试AppPreferences在第一次运行时,可以返回true,在AppPreferencesTest类里添加如下测试代码:
public void testFirstRunTrue() { assertTrue(prefs.isFirstRun()); } private AppPreferences prefs = new AppPreferences();
  这如你所看到的,这段代码编译器立即使出错误,不要担心,测试驱动开发总是从不能通过的测试用例开始的,每次努力通过一个测试用例,在通过一个个测试用例的过程中取得进展。   下面我们首先编写代码,通过这个测试用例,我们在AppPreferences类中添加如下代码:
public boolean isFirstRun() { return isFirstRun; } public void setFirstRun(boolean isFirstRun) { this.isFirstRun = isFirstRun; } private boolean isFirstRun = true;
  但是,如果是第二次运行,系统不是还会显示true吗?这明显是不正确的!一点儿没错,这段代码确实没有实现我们之前的想法,但是这段代码却可以通过我们的测试用例,测试驱动开发的原则是以尽量快的速度通过测试用例。好了,在测试工程中选择AppPreferencesTest,然后选择Android Junit Test,系统运行,你会在Junit视图中看到绿色用例通过标记。   下面添加一段代码,测试当第二次运行时的情况:
public void testSecondAndMoreRun() { prefs.isFirstRun(); assertFalse(prefs.isFirstRun()); }
  运行上述工程,结果测试用例testSecondAndMoreRun不能通过,下面我们来处理这种情况,在生产工程中的AppPreferences类中添加如下代码:
public boolean isFirstRun() { boolean orgVal = isFirstRun; isFirstRun = false; return orgVal; }
  这时再来运行测试工程的AppPreferencesTest类,又可以看到令我们心旷神怡的绿色通过标志了。   下面剩下第一次运行可以通过,第二次运行不能通过。具体代码如下所示:   在生产项目的类AppPreferences中添加:
@Override public void onCreate() { super.onCreate(); } public void onTerminate() { super.onTerminate(); } public boolean isFirstRun() { prefs = getSharedPreferences("mhcs", MODE_PRIVATE); boolean orgVal = isFirstRun; isFirstRun = false; Editor editor = prefs.edit(); editor.putBoolean(PREF_IS_FIRST_RUN, false); editor.commit(); return orgVal; } public void setFirstRun(boolean isFirstRun) { this.isFirstRun = isFirstRun; } public final static String PREF_IS_FIRST_RUN = "isFirstRun"; private SharedPreferences prefs = null; private boolean isFirstRun = true;
  在测试项目的测试类中添加代码:
public void testFirstRunTrue() { createApplication(); prefs = getApplication(); Editor editor = mContext.getSharedPreferences("mhcs", 0).edit(); editor.clear().commit(); assertTrue(prefs.isFirstRun()); } public void testSecondAndMoreRun() { createApplication(); prefs = getApplication(); assertFalse(prefs.isFirstRun()); }
  尤其需要注意的是testFirstRunTrue方法中,先将SharedPreferences清空的处理,这样可以模拟程序安装后第一次运行。   运行测试项目的测试用例,终于可以看到完整功能的绿色通过标志了。

 


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android测试驱动开发实践

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android测试驱动开发实践

在Android应用开发中,相信很少有人在坚持先由设计人员做完整的概要设计 、详细设计,然后交给程序员进行编码实现了。通常是在有一个大体框架的情况下,开始进行具体编码开发了。在这种情形下,开发速度可以有很大的提高,但是终代码质量却不可避免的
2022-06-06

Android测试驱动开发实践2

在实际项目开发过程中,一般先实现核心功能,后再做辅助性功能,这样可以尽快验证Idea的正确性,同时有助于让老板、投资人或客户看到可运行的产品,从而对产品充满信心,加大对项目的支持。但是对于我们这个项目而言,我们首先需要得到一个Android
2022-06-06

Android测试驱动开发实践3

至此,一个基于MVC的基本Android应用程序已经初步形成了。下面我们来实现一个具有TabHost的布局的典型Android应用,由于我们基本上可以不考虑Android 4.x以前的版本,因此我对TabHost布局的实现将采用Fragme
2022-06-06

Android测试驱动开发实践1

在正式进行Android测试驱动开发之前,不得不先提一下Android应用架构问题。在传统软件开发中,MVC架构得到了广泛的应用,然而在Android开发中,很少见应用采用了MVC架构(不要说Android及Widget全部采用的是MVC架
2022-06-06

C#开发建议:测试驱动开发与单元测试实践

C#(C Sharp)是一种通用、面向对象的编程语言,它在软件开发领域得到了广泛的应用。对于C#开发者来说,掌握一些开发建议是非常有益的,可以提高代码的质量和开发效率。本文将介绍测试驱动开发(TDD)和单元测试在C#开发中的实践,并分享一些
C#开发建议:测试驱动开发与单元测试实践
2023-11-22

PHP设计模式:测试驱动开发实践

tdd用于编写高质量php代码,步骤包括:编写测试用例,描述预期功能并使其失败。编写代码,仅使测试用例通过,无需过分优化或详细设计。测试用例通过后,优化和重构代码以提高可读性、可维护性和可扩展性。PHP 设计模式:利用测试驱动开发 (TDD
PHP设计模式:测试驱动开发实践
2024-05-14

Android UI自动化测试佳实践

一、概述Android系统测试和Web的测试类似,有两类自动化的方式:录制回放与手动开发自动化case。由于录制回放在长期维护与代码重用方面存在问题,这里主要的方式还是采用手动开发自动化case来进行。在Web自动化测试中有一个比较好的实践
2022-06-06

Go函数性能优化:测试驱动开发与自动化测试

在 go 中优化函数性能的关键方法是:测试驱动开发 (tdd):通过编写测试先于代码来促进健壮、可维护的代码。自动化测试:自动化单元测试以在每次代码更改时确保代码质量。实战案例:优化读取文件功能,通过 tdd 和自动化测试,确保其性能和正确
Go函数性能优化:测试驱动开发与自动化测试
2024-04-30

C++开发建议:如何进行C++测试驱动开发

C++是一种高效、可靠、可扩展性强的编程语言,适合用于开发各种类型的软件。在开发C++应用程序时,测试驱动开发(TDD)是一种可行的方法,可以确保代码的质量并提高开发效率。本文将介绍如何进行C++测试驱动开发。理解测试驱动开发测试驱动开发是
C++开发建议:如何进行C++测试驱动开发
2023-11-22

如何使用Django进行测试驱动开发

本篇内容介绍了“如何使用Django进行测试驱动开发”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!所谓测试驱动开发(TDD),就是先编写测试
2023-06-21

JavaScript Jest 之路:让测试驱动你的开发

JavaScript 中的 Jest 框架提供了全面的测试支持,让开发者可以采用测试驱动开发 (TDD) 方法来构建可靠且健壮的应用程序。
JavaScript Jest 之路:让测试驱动你的开发
2024-02-17

PHP 框架中的测试驱动开发策略

php 框架中的测试驱动开发 (tdd) 策略包括:设置测试环境(安装测试框架、配置环境)编写测试用例(测试代码预期输出)编写源代码(实现测试中描述的功能)运行测试(验证源代码运行情况)重构和调试(修复失败测试并重写代码)实战案例:sumn
PHP 框架中的测试驱动开发策略
2024-05-23

golang函数的测试驱动开发流程如何实现?

tdd 流程有助于确保 go 函数的正确性和行为文档。步骤:1) 编写使用 go test 命令的测试,定义函数和测试用例。2) 编写满足测试用例行为的函数代码。3) 运行 go test 命令验证函数是否符合预期。4) 根据需要重复步骤
golang函数的测试驱动开发流程如何实现?
2024-04-29

JavaScript Jest 探秘:揭开测试驱动的开发秘密

探索 JavaScript Jest,一种强大的测试框架,它可以让开发者在每次进行代码改动时都能够对他们的代码进行快速可靠的测试。本文将深入探讨 Jest 的功能、优势和最佳实践,帮助开发者掌握测试驱动的开发方法。
JavaScript Jest 探秘:揭开测试驱动的开发秘密
2024-02-17

C++嵌入式系统开发的自动化测试实践

自动化测试实践可提高嵌入式系统开发的质量、效率和可重复性。对于 c++++ 开发,google test 框架提供了丰富的断言、用例生成器和 ide 集成。实战案例演示了使用 google test 验证预期结果,为测试用例编写 expec
C++嵌入式系统开发的自动化测试实践
2024-05-12

设计模式与测试驱动开发的关系

tdd 与设计模式可提高代码质量和可维护性。tdd 确保测试覆盖率,提高可维护性,并提高代码质量。设计模式通过松耦合和高内聚等原则协助 tdd,确保测试覆盖应用程序行为的各个方面。它还通过可重用性,可维护性和更健壮的代码提高可维护性和代码质
设计模式与测试驱动开发的关系
2024-05-09

Golang开发经验分享:如何进行高效的测试驱动开发和单元测试

在Golang开发中,测试驱动开发和单元测试是非常重要的一环。测试驱动开发(TDD)是一种软件开发方法,其中测试在编写代码之前编写,并且在编写的代码通过测试之前也无法编译。而单元测试则是在代码编写完成后对代码某一小部分进行测试,以确保这一小
Golang开发经验分享:如何进行高效的测试驱动开发和单元测试
2023-11-22

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录