仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 538|回复: 10
打印 上一主题 下一主题

[学习教程] 了解下JAVA的寻求代码质量 - 测试Struts遗留的使用程序

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:26:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
再说第三点:我并没有提到服务器也要整合,然后是IDE,一个好的IDE能够200%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那。
基于Java™的Web开辟范畴比来呈现了丰厚的合作性手艺。启动新项目标开辟职员能够在很多分歧的框架之间举行选择,包含JavaServerFaces、Tapestry、Shale、Grails和Seam(只枚举浩瀚机敏的称号中的几个)。很快,我们就能够经由过程JRuby框架在Java编程中利用RubyonRails了!
但就在不远的已往,只要一个JavaWeb开辟框架卓但是立。Struts是第一个在Java天下掀刮风暴的框架,并且多年以来,仿佛是假如一个项目不必Struts构建就没有出路一样。没有Struts履历的Java开辟职员很希少,也很不幸,就像明天的开辟职员没有传闻过RubyonRails一样。
即便Struts正渐渐地从舞台中心退往(本来的基础框架,如今叫做Struts1,仿佛正在加入Web框架的汗青舞台),但它的遗产仍旧存在,既以Shale的情势存在,又以运转活着界各地的不计其数的遗留使用程序的情势存在。由于很多企业宁肯测试和保护这些使用程序而不肯意费钱从头编写它们,以是了解Struts应用程序的一些缺点,和怎样环绕它们举行重构,是个好主张。
这个月,我要把以质量为中心的办法用于Struts使用程序的测试场景。分离实际,这个场景环绕着最广泛的Struts机关:深受喜好的Action类。
1、2、3,举动!
Struts的刷新之一就是把Web开辟从Servlet移进了Action类。这些类包括营业逻辑,以JavaBean的情势(一般叫做ActionForm)把数据传送到JSP。然后JSP处置使用程序视图。Struts到MVC的办法非常简单把握,以致于很多开辟团队莽撞地闯出来,而很少思索与Action相干的临时计划和保护成绩。
测试和庞大性
我已发明,在开辟职员的测试和代码的庞大性之间存在激烈的相干性:没有个中一个的中央,一般也没有另外一个。高度庞大的编码难于测试,了局是很少有人会真正为它编写测试。反过去,编写测试能够下降代码的庞大性。由于给复杂代码编写测试更坚苦,并且由于会边走边测试,以是会发明本人朝着更复杂的代码机关行进。假如代码太庞大,并且晓得不能不测试它,您大概就会在测试之前对庞大性举行重构。不管怎样对待,为不那末复杂的代码编写测试是没落代码庞大性的好理论。
固然在谁人时分(已往的自在光阴啊)大概没人想过,但StrutsAction类一般成为庞大性的回护所。像在老的EJB架构中申明缭乱的会话Facade一样,Action类会成为特定营业历程的严厉假装,大概经由过程间接挪用EJB,经由过程打开数据库毗连,大概经由过程挪用其他高度依附的对象。Action类另有输入耦合(经由过程java.servletAPI包中的对象,比方HttpServletRequest和HttpServletResponse),从而极难把它们断绝出来测试。
断绝出来测试Action类的坚苦意味着它们能够很简单变得相称庞大——出格是当它们酿成愈来愈深切地与遗留框架耦合的时分。如今我们来看这个坚苦在实在的遗留使用程序场景中感化的情形。
测试应战
即便最复杂的StrutsAction类也会是个测试应战。比方,以清单1中的execute()办法为例;它看起来充足复杂,能够测试,可是真的么?
清单1.这个办法看起来简单测试……
public ActionForward execute(ActionMapping mapping, ActionForm aForm,
 HttpServletRequest req, HttpServletResponse res) throws Exception {
 try{

  String newPassword = ((ChangePasswordForm)aForm).getNewPassword1();
  String username = ((ChangePasswordForm)aForm).getUsername();

  IUser user = DataAccessUtils.getDaos().getUserDao().findUserByUsername(username);

  user.digestAndSetPassword(newPassword);
  DataAccessUtils.getDaos().getUserDao().saveUser(user);

 }catch(Throwable thr){
   return findFailure(mapping, aForm, req, res);
 }
 return findSuccess(mapping, aForm, req, res);
}
.Action类的输入耦合

<br>
可是,就像在中能够看到的,在试图断绝ChangePasswordAction类并查验execute()办法时,该类给出了一些有代表性的应战。为了无效地测试execute()办法,必需处置三层耦合。起首,到Struts本身的耦合;其次,ServletAPI代表一个停滞;最初,到营业对象包的耦合,进一步反省营业对象包,还会无数据会见层利用Hibernate和Spring。
<p>
认真的记,感觉很紧张根本就没有时间和能力,来对技术知识点进行思考。这样课下就只能对知识进行简单的理解,其实简单的理解就是记忆课堂上讲的知识点,
再现理想 该用户已被删除
沙发
发表于 2015-1-21 06:54:03 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
兰色精灵 该用户已被删除
板凳
发表于 2015-1-30 10:13:37 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
莫相离 该用户已被删除
地板
发表于 2015-2-6 09:47:25 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
小妖女 该用户已被删除
5#
发表于 2015-2-7 21:09:23 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
海妖 该用户已被删除
6#
发表于 2015-2-23 10:57:10 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
不帅 该用户已被删除
7#
发表于 2015-2-23 10:57:10 | 只看该作者
是一种使用者不需花费很多时间学习的语言
若天明 该用户已被删除
8#
发表于 2015-2-24 00:14:14 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
老尸 该用户已被删除
9#
发表于 2015-3-6 17:32:31 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
飘灵儿 该用户已被删除
10#
发表于 2015-3-7 04:54:58 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
若相依 该用户已被删除
11#
发表于 2015-3-21 02:00:54 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 18:14

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表