快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
ase。因为在模拟和 Cactus 方式中可以 使用相同的测试用例,所以可以在这个类中复制 MockLoginActionTest 的内容。在选中的容 器中构建并部署这个应用程序。

最后,把 jdbc/ds1 配置成数据源。

StrutsTestCase简化开发过程(9)

时间:2011-04-26 IBM Sunil Patil

STC Cactus 方法的工作原理

在使用 Cactus 测试应用程序的时候,必须把应用程序部署在 Web 容器中,还要在容器 外面用 JUnit 测试用例的形式运行 Cactus 测试用例。在运行 Cactus 单元测试时,它会为 类中的每个测试用例方法都创建并执行一个针对 URL 的HTTP 请求,URL 由 cactus.properties 文件中 cactus.contextURL 参数指定。

在示例应用程序的例子中,在执行 testDisableUser 时,会创建并执行以下请求:

http://localhost:9080/sample1/ServletRedirector? Cactus_TestMethod=testDisabledUser&Cactus_TestClass=   com.sample.test.CactusLoginActionTest&Cactus_AutomaticSession=true&Cactus _Service=CALL_TEST

这个请求会调用 ServletTestRedirector servlet(作为示例 Web 应用程序的一部分部 署)。在 ServletTestRedirector 中,Cactus 从 Cactus_TestClass 请求参数中查找测试 用例类的名称,并调用 Cactus_TestMethod 参数指定的方法。在执行这个方法之后,就会以 HTTP 响应的方式把结果返回 Cactus 测试类,这个类将执行一个外部容器。

此外,在 testDisabledUser() 方法中的 CactusStrutsTestCase 的容器内(in- container)版本得到控制时(在本文的示例中是 CactusLoginActionTest),STC 会调用 actionPerform() 方法,该方法将创建 ActionServlet、ServletContext 和 ServletConfig 对象的实例。STC 还在包装器中包装了当前的请求和响应。然后它调用 ActionServlet 的方 法 doPost(),该方法使用的参数是这些包装的 ServletRequest 和 ServletResponse 对象 。然后 Struts 会像平常一样处理请求。

通过使用 Cactus 方式,就可以调用 processRequest(true) 方法告诉 STC 验证转发 JSP,从而执行和测试转发的 JSP,以确保不会抛出任何编译和运行时错误。

一旦控制权从 actionPerform() 返回,就可以调用各种 verifyXXX() 方法检验假设是否 成立。

测试转发 JSP 的错误

修改 testVaidLogin() 方法,测试 Success.jsp,保证它没有编译时错误或运行时错误, 如清单 14 所示:

清单 14. testValidLogin() 方法

public void testValidLogin() throws Exception{ STCRequestProcessor.addMockActionForm ("loginForm","com.sample.login.mock.MockLoginActionForm"); STCRequestProcessor.addMockAction ("com.sample.login.LoginAction","com.sample.login.mock.MockLoginAction");     processRequest(true);     setRequestPathInfo("/login");     addRequestParameter("userName","ibmuser");     addRequestParameter("password","ibmpassword");     actionPerform();     verifyNoActionErrors();     verifyForward("success");     }

还要修改 Success.jsp,添加以下几行,让它抛出 RunTimeException 异常:

<%     throw new RuntimeException("test error"); %>

现在,当运行这个测试用例时,testValidLogin() 会创建并执行数据库查找,检查用户 帐户是否禁用,用户名和口令是否有效。如果测试失败,则表明在执行 Success.jsp 时遇到 了运行时错误。

Cactus 的优势与不足

使用 Cactus 当然有优势,但是困难也不少。从正面来说,它允许测试 JSP 页面

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