老尸 发表于 2015-1-18 11:09:25

了解下JAVA的AspectJ和仿照对象的测试天真性

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好。

愤怒的大鸟 发表于 2015-1-25 23:31:45

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

乐观 发表于 2015-2-4 12:04:12

还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。

变相怪杰 发表于 2015-2-8 14:21:19

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

灵魂腐蚀 发表于 2015-2-10 02:23:48

J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。

飘灵儿 发表于 2015-2-28 15:33:04

是一种为 Internet发展的计算机语言

海妖 发表于 2015-3-10 00:24:23

另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。

不帅 发表于 2015-3-17 03:10:35

那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧!

山那边是海 发表于 2015-3-23 17:57:36

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
页: [1]
查看完整版本: 了解下JAVA的AspectJ和仿照对象的测试天真性