快速业务通道

StrutsTestCase简化开发过程 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
t 对象,而不是让容器来创建它,然后再 调用对象上的适当方法。ActionServlet 在初始化时需要 ServletContext 和 ServletConfig 对象,在请求处理时需要 HttpServletRequest 和 HttpServletResponse 对 象。STC 创建这些类的模拟对象,并把它们传递给 Struts。

MockStrutsTestCase 是一个扩展了 junit.framework.TestCase 类的 JUnit 测试用例, 所以每个测试用例都会执行 setup() 方法。在 MockStrutsTestCase 对象的 setup() 方法 中,STC 创建 ActionServlet 对象和其他必需的模拟对象。

在调用 setRequestPathInfo() 或 addRequestParameter() 方法时,会调用模拟 HttpServletRequest 对象的适当方法。在 HttpServletRequest 的模拟实现中,会把这条信 息保存在适当的设置状态。所以,如果调用 addRequestParameter("name","value"),模拟 的 HttpServletRequest 对象会保存它,然后,在 Struts 调用 request.getParameter ("name") 时,用 "value" 作为返回值。

在恰当地完成 HttpServletRequest 初始化之后,就可以调用 actionPerform() 方法把 控制权传递给 Struts。actionPerform() 方法调用 ActionServlet 的 doPost() 方法传递 HttpServletRequest 和 HttpServletResponse 的模拟实现。

在 ActionServlet 的 doPost() 方法中,处理请求的方式与其他 Struts 请求的处理方 式类似,区别是直到执行 ActionForward JSP 组件之前才停止请求处理。在这个阶段,模拟 对象的状态会被修改,以指出已经保存 ActionErrors 或 ActionMessages,或者指出由此生 成的 ActionForward 是什么。

一旦控制权从 control returns from the actionPerform() 方法返回,就可以调用适当 的 verifyXXX() 方法(检测模拟对象的状态)来检查各种假设是否成立。

测试禁用的用户

LoginActionForm 类的 isUserDisabled() 方法存在一个问题。在这个方法中,是通过查 询 USERDISABLED 表来找出用户帐户是否被禁用。但是在当前的环境下,我们不想把时间浪 费在设置和查询数据库上。

请记住,我们的目标是检查应用程序的 Struts 部分,而不是检查数据库的交互代码。为 了测试数据库交互代码,可以从若干个可用工具中选择一个工具,例如 DBUnit。针对这一情 况的最佳方案应当是创建一个 LoginActionForm 类的子类,并重写其中的 isUserDisabled () 方法。这个方法将根据输入参数的值判断是返回 true 还是返回 false。

比如在这个例子中,方法会一直返回 true,除非用 disabledUser 作为输入参数调用它 。现在只应当在单元测试阶段使用这个方法,而主程序 LoginActionForm 不应当知道这一点 。针对这个需求,我创建了 STCRequestProcessor,它扩展了 RequestProcessor。它允许向 Action 和 ActionForm 类中插入模拟实现。

要使用 STCRequestProcessor,需要修改 struts-config.xml,如清单 7 所示:

清单 7. struts-config.xml 文件

<controller>     <set-property property="processorClass"  value="com.sample.util.STCRequestProcessor"/> </controller> </code>

这一行指出 Struts 用 STCRequestProcessor.java 作为 RequestProcessor。不要忘记 ,在容器中部署应用程序部署时要删除这些行。

StrutsTestCase简化开发过程(6)

时间:2011-04-26 IBM Sunil Patil

接下来是创建 LoginActionForm 的模拟类,如清单 8 所示:

清单 8. MockLoginActionForm.java 类

public class MockLoginActionForm extends LoginActionForm {     public boolean isUserDisabled(String userName) {        if (userName != null &

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号