|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,netbeans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。
用“test-only”举动加强单位测试
简介:在开辟过程当中分离了单位测试的程序员都懂得如许做带来的优点:代码更简便,勇于重构、速率更快。但即使是最固执的单位测试者,在碰着测试举动依附于体系形态的类的情形时,也会显得信念不敷。NicholasLesiecki是一位受人尊崇的Java程序员,也是XP社区的向导者,他将先容环绕测试案例断绝的成绩,并向我们展现怎样利用仿照对象(mockobject)和AspectJ来开辟准确和强健的单位测试。
比来,人们对极度编程(ExtremeProgramming,XP)的存眷已扩展到它的一个最具可移植性的使用上:单位测试和最后测试计划。由于软件事情室已入手下手接纳XP的开辟办法,我们能够看到,由于有了一套周全的单位测试工具,良多开辟者的开辟质量和速率都失掉了进步。但编写好的单位测试耗时吃力。由于每一个单位都与别的单位互助,以是编写单位测试大概必要大批的设置代码。这使得测试变得加倍高贵,并且在特定情形下(好比代码充任远程体系的客户机时),如许的测试大概几近没法完成。
在XP中,单位测试填补了集成测试和验收测试的不敷。后两种测试范例大概由自力的小组举行,大概作为自力的举动举行。可是单位测试是与要测试的代码同时编写的。面临日趋切近亲近的停止刻日和使人头痛的单位测试带来的压力,我们极可能任意编写一个测试了事,大概完整保持测试。由于XP依附于主动的念头和自力更生的习气,以是XP历程(和项目!)的最好好处就是使测试坚持会合和易于编写。
所需背景
本文的重点是AspectJ的单位测试,以是文章假定您熟习基础的单位测试办法。假如您不熟习AspectJ,那末在持续之前浏览一下我对AspectJ的先容极可能会对您有所匡助(请参阅参考材料)。这里所说的AspectJ办法不长短常庞大,但面向aspect的编程却必要一点工夫往习气。为了运转示例,您必要在测试呆板上安装Ant。不外您不必要具有任何出格的Ant专门手艺(超越基础安装所需的手艺)来运转示例。
仿照对象能够匡助您办理这类进退失据的场合排场。仿照对象测试用只用于测试的仿照完成来替换和域相干的工具。但是,这类战略切实其实在某些情形下带来了手艺上的困难,好比远程体系上的单位测试。AspectJ是Java言语的一种面向aspect的扩大,它同意我们在传统的面向对象办法失利的中央代之以test-only举动,从而用别的办法举行单位测试。
在本文中,我们将会商一种编写单位测试既坚苦又符合必要的罕见情形。我们将从为一个基于EJB的使用程序的客户机组件运转单位测试入手下手。我们将利用这个示例作为起点,来会商在远程客户机对象长进行单位测试时大概呈现的一些成绩。为懂得决这些成绩,我们将开辟两个新的依附于AspectJ和仿照对象的测试设置。看到文章开端时,您就应当对罕见的单位测试成绩和它们的办理计划有所懂得,还应当开端懂得AspectJ和仿照对象测试供应的一些风趣的大概性。
单位测试示例
示例由EJB客户机的一个测试构成。本案例研讨中提出的良多成绩都合用于挪用Web服务的代码、挪用JDBC的代码、乃至本经由过程虚包挪用的当地使用程序“远程”部分的代码。
服务器真个CustomerManagerEJB实行两种功效:它查找客户名并向远程体系注册新客户名。清单1展现了CustomerManager公然给客户机的接口:
清单1.CustomerManager的远程接口
public interface CustomerManager extends EJBObject {
/**
* Returns a String[] representing the names of customers in the system
* over a certain age.
*/
public String[] getCustomersOver(int ageInYears) throws RemoteException;
/**
* Registers a new customer with the system. If the customer already
* exists within the system, this method throws a NameExistsException.
*/
public void register(String name)
throws RemoteException, NameExistsException;
}
<p>
那这个对象有什么意义?现在很多用javabean的人就不能保证对象有完整的意义,不成熟的使用模式等导致代码疯狂增长,调试维护的时间要得多得多。在说性能之前,先说说你这个比较的来历。据说微软为了证明。net比java好。 |
|