分享
 
 
 

测试驱动的开发是重要的

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

测试驱动的开发是重要的

不知道各位有没有注意到这样一个变化,那就是现在大家都在谈论XP(eXtreme Programming)极限编程,但谈论终究还是谈论,目前真正在项目中实施XP模式开发的团队还占少数(国内)。我很庆幸我所在的团队是一个如此让我充满激情的团队,它让我们有机会用自己的行动去揭开极限编程的面纱。(无可否认,对于XP来说我们是纯粹的新手,实施XP开发得这些日子里,我们有时步履维艰,有时也想过放弃而采用传统的开发模式(那样似乎更合理),不过还好我们够有勇气(courage),我们不停的交流(communication)、交流、交流)

“简单设计、小迭代开发、配对编程以及XP的精华(交流、简单、反馈、勇气)”这些我自认为如果采用XP至少可以达到形似(呵呵,如果你说这种是披着XP的外衣,我也不反对,因为对于新的——尤其的好的事物,我们首先要“形似”,然后再求 “神似”),但是其中的“先测试后编码”我始终是XP模式中的重头戏(个人意见:))。

XP中强调测试驱动的开发(目前国内的书店可以找到XP的“鼻祖”之一 Kent Beck编写的《Test-Driven Development:By Example》影印版,你同样可以在我的站点http://plateau.sicool.com中找到该书的电子版,仅供学习使用),它强调具体的一个流程为:

“red/green/refactor”,如果你在XP中没有实施测试驱动的开发,那XP对你至少已经60%是一件漂亮的外衣了。

我之所以强调在XP中“测试在先”的重要性,是因为起初我跟你一样:可以对测试马上给出一个非常明确的认识——“那是项目后期的工作,当然也可以在项目中间阶段就开始测试,但是至少不是在还没有一句代码的时候,绝对不是!”。然而事实上我碰壁了,而且非常的痛。知道么?在第一个小迭代,我们根本不能把测试用起来,面对我们(XP强调代码共有)的代码(通过配对编程,目前的代码至少是整洁的、规范的),我没有丝毫的自信,就是说我不能说保证它总是能运行的,更别提重构(refactor)了。

在传统的开发模式中,重构要需要怎样的“小心”你根本无法想象!,然而为什么XP开发员却能够像“玩耍”一样对代码进行重构、重构再重构?因为他们(XP开发员)能通过各种各样的测试对自己的代码(重构以后的代码)有足够的理由自信它们是能运行的,这种自信是发自内心的,它让你更加热爱测试(love test)热爱重构(love refactor)、更加热爱这项运动(love this game!:))。

目前我们的项目中采用Struts+Hibernate开发,其中牵涉到的测试框架有:

1.StrutsTestCase

用于模拟struts环境来测试action.(它真的很有意思,特别对于熟悉struts的开发员来说)。

下面是strutstestcase.sourceforge.net上一段对它的描述:

StrutsTestCase for JUnit is an extension of the standard JUnit TestCase class that provides facilities for testing code based on the Struts framework. StrutsTestCase provides both a Mock Object approach and a Cactus approach to actually run the Struts ActionServlet, allowing you to test your Struts code with or without a running servlet engine. Because StrutsTestCase uses the ActionServlet controller to test your code, you can test not only the implementation of your Action objects, but also your mappings, form beans, and forwards declarations. And because StrutsTestCase already provides validation methods, it's quick and easy to write unit test cases

2.Cactus

用于测试servlet filter等等

以下是cactus(http://jakarta.apache.org/cactus/)官方发布文档中对其的说明:

Cactus is a simple test framework for unit testing server-side java code (Servlets, EJBs, Tag Libs, Filters, ...).

The intent of Cactus is to lower the cost of writing tests for server-side code. It uses JUnit and extends it.

Cactus implements an in-container strategy (See How it works).

3.HttpUnit

用于jsps的测试。

4.Junit(Erich Gamma和Kent Beck开发的测试框架)上边所提到的三种框架都是基于Junit的测试框架。

本文虽然重点在说测试,但是对于“test first,code later”并没有说明怎样才能更好的实施以及对于上边提及的测试框架也没有更深入的阐述,如果你对于测试驱动的开发非常关注,或者你现在正在被此类的问题困扰,我建议你能读读大师Kent Beck的那本不是很厚的书籍(本文前部分有说明),下一段时间我会根据项目中的使用情况,对于上述测试框架进行整理并给出实例化的文档。

摘自隐隐约约出现平常人诞生的故乡[http://plateau.sicool.com]

Jplateau 2003年11月5日星期三 写于广州

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有