快速业务通道

追求代码质量 - 可重复的系统测试 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
jwebunit.WebTester; import junit.framework.TestCase; public class RepeatableWidgetCreationTest extends TestCase  {   private WebTester tester;   protected void setUp() throws Exception {   this.handleSetUpOperation();   this.tester = new WebTester();   this.tester.getTestContext().    setBaseUrl("http://localhost:8080/widget/");   }   public void testWidgetCreation() {   this.tester.beginAt("/CreateWord.html");   this.tester.setFormElement("widget-id", "893-44");   this.tester.setFormElement("part-num", "rt45-3");   this.tester.submit();   this.tester.assertTextPresent("893-44");   this.tester.assertTextPresent("successfully created.");   }   private void handleSetUpOperation() throws Exception{   final IDatabaseConnection conn = this.getConnection ();   final IDataSet data = this.getDataSet();   try{    DatabaseOperation.CLEAN_INSERT.execute(conn, data);   }finally{    conn.close();   }   }   private IDataSet getDataSet() throws IOException,  DataSetException {   return new FlatXmlDataSet(new File ("test/conf/seed.xml"));   }   private IDatabaseConnection getConnection() throws    ClassNotFoundException, SQLException {    Class.forName("org.hsqldb.jdbcDriver");    final Connection jdbcConnection =      DriverManager.getConnection ("jdbc:hsqldb:hsql://127.0.0.1",    "sa", "");    return new DatabaseConnection(jdbcConnection);   } }

加入了 DbUnit,测试用例真的是可重复的了。在 handleSetUpOperation() 方法中,每当运行一个测试用例时,DbUnit 对数据执行一个 CLEAN_INSERT。此 操作本质上将一个数据库的数据清空并插入一个新的数据集,从而删除任何之前 创建的小部件。

追求代码质量 - 可重复的系统测试(3)

时间:2010-12-09 IBM Andrew Glover

再一次探讨什么是 DbUnit?

DbUnit 是一个 JUnit 扩展,用于在运行测试时将数据库放入一个已知状态中。开发人员使用 XML 种子文件将特定数据插入到测试用例所依赖的数据库中。因而,DbUnit 便 利了依赖于一个或多个数据库的测试用例的可重复性。

但那并不意味着 已经结束了对测试用例可重复性这一话题的探讨。事实上,一切才刚刚开始。

重复系统测试

我喜欢将 清单 1 和 清单 2 中定义的测试用例称 为系统测试。因为系统测试运行安装完整的应用程序,如 Web 应用程序,它们 通常包含一个 servlet 容器和一个相关联的数据库。这些测试的目的在于校验 那些设计为端对端操作的外部接口(如 Web 应用程序中的 Web 页面)。

弹性优先级 作为总体规则,应在任何可能的时候避免测试用例继 承。许多 JUnit 扩展框架都提供特定的可继承测试用例,以便利于测试一个特 定的架构。然而由于 Java™ 平台的单一继承范例,使得从框架中继承类 的测试用例饱受缺乏弹性之苦。通常,这些相同的 JUnit 扩展框架提供了代理 API,这使得联合各种不具有严格继承结构的框架变得十分简单。

由于设 计它们的目的是为了测试功能完整的应用程序,因而系统测试趋向于增加运行次 数而不是减少设置测试的总时间。例如,清单 1 和 清单 2 中展示的逻辑测试 在运行前 需要下列步骤:

创建一个 war 文件,该文件包含

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