快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
中定义了一个新行,并映 射一些值到列(例如列 username 拥有值 “jane”)。在 user_role 中还定义 了一行。请注意这个数据库中的口令是通过 SHA 加密的。

清单 7. 用于测试表 user 和 user_role 的 DbUnit 种子文件

<?xml version=''1.0'' encoding=''WINDOWS-1252''?> <dataset>   <!-- user with password admin -->   <user username="jane"    password="d033e22ae348aeb5660fc2140aec35850c4da997"    name="Jane Admin"    date_created="2003-8-14 10:10:10"    email="jane@elsewhere.org"/>   <user_role username="jane" rolename="ADMIN"/> </dataset>

有了这个文件,就可以利用 DbUnit 插入数据、更新数据库来反映数据,甚 至删除数据。数据库修改逻辑包含在 DbUnit 的 DatabaseOperation 类中。在 这个示例中,只是通过 清单 4 中定义的 MockStrutsTestCase 类型的 setUp() 方法中的一些增强的 fixture 逻辑中的 CLEAN_INSERT 标志来保证干净的数据 集。例如,在清单 8 中,定义了三个方法,分别利用 DbUnit API 把 dbunit- user-seed.xml 文件的内容插入数据库。

清单 8. 定制的 DbUnit fixture 逻辑

private void  executeSetUpOperation() throws Exception{   final IDatabaseConnection connection = this.getConnection ();   try{   DatabaseOperation.CLEAN_INSERT.execute(connection,  this.getDataSet());   }finally{   connection.close();   } } private IDataSet getDataSet() throws IOException,  DataSetException {   return new FlatXmlDataSet(new File("test/conf/dbunit-user- seed.xml")); } private IDatabaseConnection getConnection() throws  ClassNotFoundException, SQLException {   final Class driverClass = Class.forName ("org.gjt.mm.mysql.Driver");   final Connection jdbcConnection = DriverManager.    getConnection("jdbc:mysql://localhost/ccb01",     "9043", "43xli");   return new DatabaseConnection(jdbcConnection); }

清单 8 中定义的 executeSetUpOperation() 方法将在前面的 清单 4 中定 义的 setUp() 方法中调用。这个方法再调用清单 8 中的另两个方法: getDataSet() 把 XML 转换成 DbUnit 的 IDataSet 类型,getConnection() 则 返回包装成 DbUnit 的 IDatabaseConnection 类型的数据库连接。

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

时间:2010-12-12 IBM Andrew Glover

更好的测试用例

配置好 DbUnit 后,剩下的就只有改进 清单 6 的测试用例,验证数据库中 的一切 OK。然后,添加验证其他问题场景的其余测试用例。

要确认数据库中的口令更新,可以使用 DbUnit 的查询 API,它帮助比较数 据库的结果与静态定义的 XML 文件,例如清单 9 中定义的那个。请注意这个文 件没有列出 user 表中的所有列 —— 实际上,它只列出了两个:username 和 password。

清单 9. 比较测试 XML 文件

<?xml version=''1.0''  encoding=''WINDOWS-1252''?> <dataset>   <user username="jane"    password="58117e24e4d0b8a958146c9eaa28336184f4d491"/> </dataset>

DbUnit 的查询 API 足够灵活,可以帮助过滤掉没有意义的值,在这个示例 中就是 username 和 password 之外的值。同样,在清单 10 中, verifyPassword()

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