追求代码质量(14)-对ajax应用程序进行单元测试-java开发java经验技巧

追求代码质量(14)-对ajax应用程序进行单元测试-java开发java经验技巧

ID:30948336

大小:116.88 KB

页数:10页

时间:2019-01-04

追求代码质量(14)-对ajax应用程序进行单元测试-java开发java经验技巧_第1页
追求代码质量(14)-对ajax应用程序进行单元测试-java开发java经验技巧_第2页
追求代码质量(14)-对ajax应用程序进行单元测试-java开发java经验技巧_第3页
追求代码质量(14)-对ajax应用程序进行单元测试-java开发java经验技巧_第4页
追求代码质量(14)-对ajax应用程序进行单元测试-java开发java经验技巧_第5页
资源描述:

《追求代码质量(14)-对ajax应用程序进行单元测试-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、追求代码质量(14):对Ajax应用程序进行单元测试-编程开发技术追求代码质量(14):对Ajax应用程序进行单元测试原文出处:IBM中国A/kv?在近期无疑是Web开发界最时髦的字眼之一——与Ajax相关的工具、框架、书籍以及Web站点的剧增就是该技术流行的最好证明。此外,Ajax应用程序也相当灵巧,不是吗?不过,像任何一个开发过Ajax应用程序的人证实的一样,对Ajax执行测试真的很不方便。事实上,Ajax的岀现已经从根本上使得许多测试框架和工具关衮,因为它们并没有针对异步Web应用程序测试进行设计!有趣的是,某个支持Ajax的框架的开发人员注意到

2、了这个限制,并为此做了一些非常新颖的设计:内置的可测试性。除此之外,由于该框架简化了使用Java?代码(而不是JavaScript)创建Ajax应用程序,它的起点甚高,并且充分利用了Java平台上无可置疑的标准测试框架:JUnito我所论及的框架当然是非常流行的GoogleWebToolkit,也就是GWT。在本文中,我将向您展示GWT如何实际地利用Java兼容性,使Ajax应用程序的毎个部分都能像与之对应的同步应用程序-样进行测试。JUnit和GWTTestCase因为与GWT有关的Ajax应用程序采用Java代码编写,所以非常适合开发人员使用JUn

3、it进行测试。事实上,GWT开发小组还为此创建了一个帮助器类?GWTTestCase,扩展自JUnit的3.8.l?TestCaseo该基类添加了一些功能,可测试GWT代码并处理某些基础实现从而启动并运行GWT组件。需要提醒的是:GWTTestCase?并非用來测试与UI相关的代码一一它是为了便于测试那些由U1交互磁发?的异步问题。对?GWTTestCase?用途的误解使许多刚接触GWT的开发人员备受挫折,因为他们期望能够用它方便地模拟用户界面,但最终发现这是徒劳的。Ajax组件有两个基本组成:体验和功能,这些都被设计成异步方式。图1演示了一个模拟We

4、b表单的简单Ajax组件。由于该组件支持Ajax,表单的提交是异步执行的(即:无需重新载入与传统表单捉交关联的页而)。图1.—个支持Ajax的简单Web表单DictionaryServiceWord:IISubmit输入一个有效单词,单击组件的?Submit?按钮,将向服务器发送消息请求该单词的定义。该定义通过回调异步返回,相应地插入到Web页面,如图2所示:图2.单击Submit按钮后显示响应DictionaryServiceWord:JpugnaciousSubmitinclinedtoquarrelorfightreadily,quarrelso

5、me,belligerent;combative.功能性和集成测试图2所示的交互测试可用于多个不同场景,但是其屮两种场景最为常见。从功能性观点考虑,您或许希望编写一个测试:填入表单值,单击Submit?按钮,然后验证表单是否显示定义。另外一个选择是集成测试,使您能够验证客户端代码的异步功能。GWT的?GWTTestCase?正是被设计用來执行此类测试。需要牢记的是:在?GWTTcStCasc?测试用例环境下不可以进行用户界面测试。在设计和构建GWT应用程序时,您必须清楚不妥加孩两戶缪而测试代码。这种思路需要把交互代码从业务逻辑中分离出来,正如您已经了解

6、的,这是最佳的入门实践!举例而言,重新查看图1和图2所示的Ajax应用程序。该应用程序由四个逻辑部分构成:TextBox?用于输入目标单词,Button?用于执行单击,述有两个?Label(一个用于?TextBox,另一个显示定义)。实际GWT模块的初始方法如清单1所示,但是您该如何测试这段代码呢?清单1.一个有效的GWT应用程序,但是如何测试它?publicclassDefaultModuleimplementsEntryPoint{publicvoidonModuleLoad(){Buttonbutton=newButton("Submit");T

7、extBoxbox二newTextBox();Labeloutput二newLabel();Labellabel=newLabel("Word:〃);HorizontalPanelinputPanel=newHorizontalPanel();inputPanel.setStyleName(/zinput-panel〃);inputPanel.sctVcrticalAlignmcnt(IlasVcrticalAlignmcnt.ALIGN_MIDDLE);inputPanel.add(label);inputPanel.add(box);button.

8、addClickListener(newClickListener(){publicvoido

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。