快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
方法用 DbUnit 的 createQueryTable() 方法构建 ITable 类型,以与清单 9 中定义的 XML 进行比较:

清单 10. 使用 DbUnit 查询 API 的 verifyPassword 方法

private void verifyPassword(String fileName) throws  Exception{   final IDataSet expectedDataSet = new FlatXmlDataSet(    new File(fileName));   final ITable defJoinData = this.getConnection().   createQueryTable("TestResult",    "select user.username, user.password " +    "from user where user.username=\"jane\"");   final ITable defTable = expectedDataSet.getTable("user");   Assertion.assertEquals(defJoinData, defTable); }

Assertion 类型是 DbUnit 定义的定制类,可以进行特定于数据库结果集的 额外断言。还请注意 verifyPassword() 接受一个文件路径,这意味着我可以定 义多个期望的数据集(一个用于修改的口令,一个用于相同的口令)。

反复测试 Struts

综合起来,现在有了一个可以完成以下工作的测试用例:

通过 DbUnit 填充数据库

配置 Struts

间接地调用 ChangePasswordAction 和 ChangePasswordForm 类

关联参数值

验证成功转发

验证数据库内容

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

时间:2010-12-12 IBM Andrew Glover

从清单 11 可以看出,ChangePasswordAction 测试用例只通过 testExecute 测试处理一个正常场景:

清单 11. ChangePasswordAction 测试用例

package  test.com.acme.ccb.action; import java.io.File; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import org.dbunit.Assertion; import org.dbunit.database.DatabaseConnection; import org.dbunit.database.IDatabaseConnection; import org.dbunit.dataset.DataSetException; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ITable; import org.dbunit.dataset.xml.FlatXmlDataSet; import org.dbunit.operation.DatabaseOperation; import servletunit.struts.MockStrutsTestCase; public class ChangePasswordActionTest extends MockStrutsTestCase  {   public ChangePasswordActionTest(String arg0) {   super(arg0);   }   public void setUp() throws Exception {   try {    super.setUp();    this.executeSetUpOperation();    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");   } }   public void testExecute() throws Exception{    setRequestPathInfo("/changePasswordSubmit");    addRequestParameter("username","jane");    addRequestParameter("currentPassword","admin");    addRequestParameter("newPassword1","meme");    addRequestParameter("newPassword2","meme");    actionPerform();    verifyForward("success");    verifyPassword("test/conf/dbunit-expect-user.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号