快速业务通道

追求代码质量 - 测试Struts遗留的应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
序。这个框 架实际上模拟了一个 servlet 容器,这样就能虚拟地运行和测试 Struts 应用 程序,而不必在 Tomcat(举例)中运行它了。框架还有一个方便的 MockStrutsTestCase 类,它扩展了 TestCase 并处理许多 Struts 配置方面( 例如装入 struts-config.xml 配置文件)。

但是,在您认为自己完全脱离了 Struts 配置的痛苦之前,应当了解一些正 确配置 MockStrutsTestCase 的事情。也就是说,需要把它指向代表 Web 应用 程序的目录,然后指向必要的 web.xml 和 struts-config.xml 文件。默认情况 下,MockStrutsTestCase 扫描这些项目的类路径;但是,要把 MockStrutsTestCase 配置成在特定环境中工作,操作很简单,只需覆盖一些设 置并编写一些特定的配置代码即可。

返回口令验证示例,包含 ChangePasswordAction 类的项目有图 3 所示的目 录结构:

清单 3. 示例目录结构

root/   src/    conf/    java/    webapp/     images/     jsp/     WEB-INF/   test/

追求代码质量 - 测试Struts遗留的应用程序(3)

时间:2010-12-12 IBM Andrew Glover

WEB-INF 目录包含 web.xml 和 struts-config.xml 文件,webapp 目录代表 Web 上下文环境。知道了这些,我就如清单 4 所示配置 MockStrutsTestCase:

清单 4. MockStrutsTestCase 的定制 fixture 代码

public void  setUp() throws Exception {   try {   super.setUp();   this.setContextDirectory(new File("src/webapp/"));   this.setServletConfigFile("src/webapp/WEB-INF/web.xml");   this.setConfigFile(      this.getSession().getServletContext()       .getRealPath("WEB-INF/struts-config.xml"));   }catch (Exception e) {    fail("Unable to setup test");   } }

其他测试方式

在某些情况下,基于 Action 类中发现的对应逻辑,可能能够用基于 Web 的 测试框架(像 JWebUnit 或 Selenium)间接地 测试代码。使用这些框架从测试 设置的角度来说,确实增加了复杂性。例如,要使用 JWebUnit,必须把应用程 序部署到一个运行着配置好的数据库的 servlet 容器。把 StrutsTestCase 和 DbUnit 协同使用,可以方便测试,不必 把 war 文件部署到运行着的 servlet 容器。它还允许在不 考虑应用程序的视图方面的情况下进行测试。

关于逻辑映射

正确地配置了 MockStrutsTestCase 的实例后,测试 Action 类就只包含一 点点逻辑映射。要调用 Action 类,需要强制 StrutsTestCase 框架通过一个路 径间接地 调用它,这是在 struts-config.xml 文件中定义的。

例如,要强制调用 ChangePasswordAction 类,必须告诉框架使用 /changePasswordSubmit 路径。在清单 5 中可以看到这点,清单 5 中的代码片 段来自 struts-config.xml 文件,它把 ChangePasswordAction 类映射到 /changePasswordSubmit 路径:

清单 5. struts-config.xml 代码片段显示了动作类路径映射

<action path="/changePasswordSubmit"       type="com.acme.ccb.action.ChangePasswordAction"       name="changePasswordForm" scope="request"       input="/jsp/admin/changepassword.jsp">   <forward name="success" path="/viewUsers.do"        redirect="true" contextRelative="false" /> </action>

一旦某个用户点击了提交按钮(举例),Struts 就把来自 HTTP 请求的参数 值映射到 ActionForm,在这个示例中,是上面的 struts-config.xml 代码片段

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号