4.2 应用于具体的项目 21
4.2 运行环境及配置 21
4.3 测试目录结构 22
4.4 编写测试类 22
4.4.1 普通action测试类 22
4.4.2 涉及数据库访问action测试类 23
4.5 测试中遇到的问题 24
4.6 本章小结 25
结论 26
致谢 27
参考文献 28
1 绪论
本文主要研究Struts2构件自动测试技术研究及应用,基于JUnit框架自动化测试的一种应用,着重讨论应用Action类的测试方法。
1.1 研究现状
Struts是一个基于J2EE平台的MVC框架,目的是为了减少运用MVC设计模式开发Web项目应用的时间。它只有一个中心控制器,采用XLM定制转向的URL,Action来处理逻辑[4]。JUnit是一个SourceForge上的开源软件,以IBM的Common Public License 1.0版授权协议发布[5],本文使用其最新版本JUnit4。
1.1.1 Struts2现状简介
Struts是Apache Software Foundation(ASF)支持Jakarta项目的一部分。出了Struts以外,Jakarta还包括了好几个相当成功的开源项目,例如,Tomcat、Ant和Velocity。对Struts1.0而言,最初的代码是在2000年5月到2001年6月件开发的。有超过30名开发人员参与了Struts发行版本的开发,同时又上千人通过邮件方式关注着开发过程。Struts的基本代码是有一群志愿者组成的团队来维护的【8】。论文网
经过多年的发展,Struts1已经成为了一个高度成熟的框架,不管是稳定性还是可靠性都得到了广泛的证明。市场占有率超过20%,拥有丰富的开发人群,几乎已经成为了事实上的工业标准。但是随着时间的流逝,技术的进步,Struts1的局限性也越来越多地暴露出来,并且制约了Struts1的继续发展【6】。
对于Struts1框架而言,由于与JSP/Servlet耦合非常紧密,因而导致了一些严重的问题。首先,Struts1支持的表现层技术单一。由于Struts1出现的年代比较早,那个时候没有FreeMarker、Velocity等技术,因此它不可能与这些视图层的模版技术进行整合。其次,Struts1与Servlet API的严重耦合,使应用难于测试。最后,Struts1代码严重依赖于Struts1 API,属于侵入性框架【6】。
从目前的技术层面上看,出现了许多与Struts1竞争的视图层框架,比如,JSF、Tapestry和Spring MVC等。这些框架由于出现的年代比较近,应用了最新的设计理念,同时也从Struts1中吸取了经验,克服了很多不足。这些框架的出现也促进了Struts的发展。目前,Struts已经分化成了两个框架:第一个是在传统的Struts1的基础上,融合了另外的一个优秀的Web框架WebWork的Struts2【6】。Struts2虽然是在Struts1的基础上发展起来的,但是实质上是以WebWork为核心。
Struts2为传统的Struts1注入了WebWork的先进的设计理念,统一了Struts1和WebWork两个框架。Struts1分化出来的另外一个框架是Shale。这个框架远远超出了Struts1原有的设计思想,与原有的Struts1关联很少,使用了全新的设计思想。Shale更像一个新的框架而不是Struts1的升级。而本文主要用到的是Struts2[6]。
1.1.2 JUnit现状简介
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中为最成功的一个[1]。
JUnit是在极限编程和重构(refactor)中被极力推荐使用的工具,因为在实现自动单元测试的情况下可以大大的提高开发的效率,但是实际上编写测试代码也是需要耗费很多的时间和精力的,JUnit的优势在于【1】: