追求代码质量: 对Ajax应用程序进行单元测试

使用 GWT 更轻松地测试异步应用程序

简介: 您可能从编写 Ajax 应用程序中获得了极大乐趣,但是对它们执行单 元测试却着实让人头痛。 在本文中,Andrew Glover 着手解决 Ajax 的弱点( 其中之一),即应对异步 Web 应用程序执行单元测试的固有挑战。幸运的是, 他发现在 Google Web Toolkit 的帮助下,解决这个特殊的代码质量问题要比预 想的容易。

Ajax 在近期无疑是 Web 开发界最时髦的字眼之一 —— 与 Ajax 相关的工具、框架、书籍以及 Web 站点的剧增就是该技术流行的最好证明。此 外,Ajax 应用程序也相当灵巧,不是吗?不过,像任何一个开发过 Ajax 应用 程序的人证实的一样,对 Ajax 执行测试真的很不方便。事实上,Ajax 的出现 已经从根本上使得许多测试框架和工具失效,因为它们并没有针对异步 Web 应 用程序测试进行设计!

有趣的是,某个支持 Ajax 的框架的开发人员注 意到了这个限制,并为此做了一些非常新颖的设计:内置的可测试性。除此之外 ,由于该框架简化了使用 Java 代码(而不是 JavaScript)创建 Ajax 应用程序,它的起点甚高,并且充分利用了 Java 平台上无可置疑的标准测试框 架:JUnit。

我所论及的框架当然是非常流行的 Google Web Toolkit, 也就是 GWT。在本文中,我将向您展示 GWT 如何实际地利用 Java 兼容性,使 Ajax 应用程序的每个部分都能像与之对应的同步应用程序一样进行测试。

JUnit 和 GWTTestCase

因为与 GWT 有关的 Ajax 应用程序采用 Java 代码编写,所以非常适合开发人员使用 JUnit 进行测试。事实上,GWT 开 发小组还为此创建了一个帮助器类 GWTTestCase,扩展自 JUnit 的 3.8.1 TestCase。该基类添加了一些功能,可测试 GWT 代码并处理某些基础实现从而 启动并运行 GWT 组件。

需要提醒的是:GWTTestCase 并非用来测试与 UI 相关的代码 —— 它是为了便于测试那些由 UI 交互触发 的异步 问题。对 GWTTestCase 用途的误解使许多刚接触 GWT 的开发人员备受挫折,因 为他们期望能够用它方便地模拟用户界面,但最终发现这是徒劳的。

Ajax 组件有两个基本组成:体验和功能,这些都被设计成异步方式。图 1 演示了一个模拟 Web 表单的简单 Ajax 组件。由于该组件支持 Ajax,表单的 提交是异步执行的(即:无需重新载入与传统表单提交关联的页面)。

图 1. 一个支持 Ajax 的简单 Web 表单

时间: 2024-11-17 06:56:37

追求代码质量: 对Ajax应用程序进行单元测试的相关文章

追求代码质量

如果这样说不会(令您)很痛苦的话,请设想您是一名任职于一家 2002 年 早期创建的公司的开发人员.在金钱的驱动下,您和您的团队接到了一项任务, 即使用最新且最强大的 Java API 构建一个大型的数据驱动的 Web 应用 程序.您和公司管理层都坚定不疑地相信这就是最终将被称为敏捷过程 的东西 .从第一天起,您就用 JUnit 构建测试,且把它作为 Ant 构建过程的一部分尽 可能频繁地运行.还将设置一个定时任务在夜间运行构建.在接下来的某个时刻 ,有人会下载 CruiseControl,不断

追求代码质量: JUnit 4 与 TestNG 的对比

经过长时间积极的开发之后,JUnit 4.0 于今年年初发布了.JUnit 框架的某些最有趣的更改 -- 特别是对于本专栏的读者来说 -- 正是通过巧妙地使用注释实现的.除外观和风格方面的显著改进外,新框架的特性使测试用例的编制从结构规则中解放出来.使原来僵化的 fixture 模型更为灵活,有利于采取可配置程度更高的方法.因此,JUnit 框架不再强求把每一项测试工作定义为一个名称以 test 开始的方法,并且现在可以只运行一次 fixture,而不是每次测试都需要运行一次. 虽然这些改变令人

《JavaScript专家编程》——9.3 为什么要度量代码质量

9.3 为什么要度量代码质量 "我不能为代码质量而索价."这是我问我的朋友关于这个问题的想法时,他的原话.他的意思是,代码质量主要是对程序员有利,而对客户来说是一种无形的税收.我能理解他的观点:我有几次经验,其中一个潜在客户将目光投向了我引以为傲的有关测试的方法论上.我的朋友接着说,"客户支付的是结果,而不是过程.当我买票到西南部,我付的钱是为了到达我的目的地,而不是为了乘坐飞机."这句话听起来好像有点道理,但我会在这一节讨论度量代码质量并不会让你失去竞争优势, 而

改善程序代码质量的一些技巧

有很多理由都能说明为什么我们应该写出清晰.可读性好的程序.最重要的一点,程序你只写一次,但以后会无数次的阅读.当你第二天回头来看你的代码 时,你就要开始阅读它了.当你把代码拿给其他人看时,他必须阅读你的代码.因此,在编写时多花一点时间,你会在阅读它时节省大量的时间. 让我们看一些基本的编程技巧: 不要将参数作为变量使用 Java代码   int Sample( int inputVal ) {   inputVal = inputVal * CurrentMultiplier( inputVal

程序员的压力水平能精确预测代码质量

瑞士研究人员在ACM的软件工程国际会议上发表报告称,监视程序员的压力水平能比代码审查更精确的预测代码质量. 这项发现意味着程序员在写代码时穿戴生物信息监视器,能自动根据其压力水平标记出需要返工的代码.这项研究被指可能会潜在侵犯隐私,本身也可能会构成一种 新的压力因素.但程序员如果自己选择穿戴生物信息监视器,那么他们在敲完代码后可以根据系统的提示检查心神不宁时写的代码. 文章转载自 开源中国社区[http://www.oschina.net]

开发端到端的Ajax应用程序,第1部分:用一个场景设置Ajax环境

Ajax(Asynchronous JavaScript + XML)正在迅速地成为时髦的技术,它可以为在浏览器中运行的 Web 应用程序提供具有桌面质量的软件特性.开放源码软件(比如 Linux-Apache-MySQL-PHP,即 LAMP)和基于开放标准的 Java 2 Platform, Enterprise Edition 中间件(比如 IBM WebSphere Application Server Community Edition)为开发和部署 Ajax Web 应用程序提供了出

提高代码质量:如何编写函数

提高代码质量:如何编写函数 函数是实现程序功能的最基本单位,每一个程序都是由一个个最基本的函数构成的.写好一个函数是提高程序代码质量最关键的一步.本文就函数的编写,从函数命名,代码分布,技巧等方面入手,谈谈如何写好一个可读性高.易维护,易测试的函数. 命名 首先从命名说起,命名是提高可读性的第一步.如何为变量和函数命名一直是开发者心中的痛点之一,对于母语非英语的我们来说,更是难上加难.下面我来说说如何为函数命名的一些想法和感受: 采用统一的命名规则 在谈及如何为函数取一个准确而优雅的名字之前,首

《JavaScript专家编程》——第9章 代码质量 9.1 定义代码质量

第9章 代码质量 质量不是一种行为,而是一种习惯. --Aristotle 写高质量的JavaScript是什么意思?质量能度量吗?还是说它是一个主观感受,类似于美和艺术的柏拉图式的理想?程序员往往会在质量的主观和客观理解之间摇摆不定.他们提出了诸如软件工艺的概念,这是一种用类似手工艺的方法来编写软件的方式.软件工匠常被这样描述:他们拥有超群的技术,总是能将工作提炼为基本的.本质的部件.这样一个工匠在电气上被称为摇滚明星程序员.这基于两个标准,一是这个人具有如同艺术家一样的独特天赋,二是他工作的

开发保留标准浏览器功能的AJAX应用程序(3)

ajax|标准|程序|浏览器 使用碎片标识符,我们可以创建一个"Ajax-URI",其中的客户端部分和服务器端部分使用"#"隔开. JavaScript提供了window.location()函数,以便通过URI更新浏览器的历史记录和地址.此外,我们可以使用window.location.hash()直接访问碎片标识符. 在下面的代码片断中,您可以看到如何通过对选择框使用onchange事件处理程序来扩展我们的代码,该处理程序使用一个"Ajax-URI&q