`

DBUnit实践

阅读更多
       经过下午和晚上的摸索,基本上已经搞定了DBUnit。说实在话,我觉得DBUnit比较简单,如果我去设计的话,应该也能够设计得比较好。不过,我只对MYSQL, HSQLDB稍微熟悉一点,其它的数据库就不行了
      
       好了,闲话少说。

       在开始DBUnit实践之前,我调查了相关的DBUnit的资料,调查了一些做DAO测试的观点和看法。
      
  1. 目前,最有效的方法是利用脚本来重建数据库。测试前去drop表,然后create表,然后再进行测试。
  2. 每一个开发人员需要搞一个数据库实例。不能公用一个数据库。单元测试数据库最好和开发数据库分开。HSQLDB内存数据库值得尝试(我不推荐)。
  3. 使用springAbstractTransactionalDataSourceSpringContextTests。在每个testcase开始之前,会自动开启一个事务,然后在结束的时候进行事务回滚。这样就可以隔绝几个测试用例之间的相互干扰。这很重要,才能够实现测试的自动化。

  4. 测试DAO不如连数据库一起测试吧。因为DAO测试的目的不是DAO接口实现对不对,而是测试是否如你预期的发送了SQL,如你预期的返回了结果集。这个时候你Mock之后,测试就没有意义了。
  5. 在SpringSide中,利用DBUnit提供的数据库准备和回收工作,提供三种数据库连接配置,采用Excel为数据源,提供两种数据库的配置和回收的应用策略。(我看过源代码了,相当简单,对DBUnit进行了下封装,把自己想要的功能给提取出来了,感谢。)

    上述观点和做法,对我实践DBUnit有很大帮助。最后,去DBUnit站点,读了一下关于DBUnit的Core Component部分,其实就三部分:
  1.     DataSet: 这个是我们需要准备的测试数据。
  2.     DatabaseOperation: 对数据库的操作,有几种不同的操作,文档写得比较清楚。
  3.     DataBaseConnection:需要持有对数据库的Connection,以便执行各种操作。
     DBTestCase extends TestCase,DBTestCase的源代码写得比较清楚,看看就明白了。它就是在SetUp的时候,执行定义好的数据库操作;在TearDown的时候,同样也是执行数据库操作就OK了。

     应该说:DBUnit这个框架其实相当简单。如果我们对Junit比较熟悉的话,应该很快就可以上手的。


    具体到自己的项目,我认为需要注意几点:
    1. 写一个基TestCase,将测试数据库的配置信息给写好。不用在每个Sub TestCase中去写这些东西。直接继承JdbcBasedDBTestCase就可以了。(不过这个类也没有提供多少东西,也无所谓了)
    2. 对于每个Sub TestCase,需要的DataSet文件,需要单独建立data文件。组织这种文件的方式需要我们写好。Sub TestCase中,直接返回FlatXmlDataSet就可以满足要求。
    3. EXCEL文件不是很好用。我用EMS MYSQL MANAGER导出xls文件后,运行单元测试老是报DataType转换错误。DATE类型似乎转换是有问题的。
    4. 速度不快。因为要配置实体工具,得花一段时间。还要改变datasource.xml以及hibernate.cfg.xml文件,不是很方面。这也能看出来,实体工具的性能不行。
   
    好了,以后可以用DBUNIT来做DAO测试了,何乐而不为。以前,我总是写很多测试方法,都放在Transaction中,最后回滚,现在不用写那些代码了。不错。

    附:
           DBUnit相关资料:

   
分享到:
评论
2 楼 hiwzg 2007-06-07  
我一般不用DBUnit自己的AssertEquals方法,而是直接用的JUNIT的AssertEquals。
如果有需要的话,我把自己做的DBUnit工程给大家发上来,可以参考下。

一根筷子 写道
不错,但是用dbunit很多时候断言比较困难,您不觉得吗?
1 楼 一根筷子 2007-05-31  
不错,但是用dbunit很多时候断言比较困难,您不觉得吗?

相关推荐

    DBUnit最佳实践之增删改查

    在本文中,我们将深入探讨 DBUnit 的最佳实践,聚焦于数据库的增删改查操作,帮助您优化测试流程,提升软件质量。 1. **数据初始化**: 在开始任何数据库操作之前,DBUnit 提供了 `IDatabaseConnection` 接口来...

    DBUnit最佳实践之数据备份与恢复

    这篇“DBUnit最佳实践之数据备份与恢复”博文中,作者分享了如何有效地利用DBUnit进行数据备份和恢复,这对于开发和测试环境中的数据管理至关重要。 首先,我们需要了解DBUnit的基本概念。DBUnit是一个JUnit扩展,...

    DBUnit最佳实践之使用ant命令

    DBUnit 是一个 Java 开发者常用的数据库测试工具,它与JUnit等测试框架配合,能够帮助开发者在测试...通过以上实践,我们可以高效地利用DBUnit与Ant集成,实现数据库的自动化测试和管理,提升项目的测试效率和质量。

    dbunit帮助文档(HTML版)

    **dbunit帮助文档(HTML版)** DBUnit是一款开源的Java库,专门用于数据库测试,它遵循TestNG或JUnit测试框架。...通过深入学习和实践,你可以更有效地管理和维护数据库状态,确保测试的质量和可靠性。

    DBUnit 进行单元测试

    DBUnit 是一个强大的Java库,专门用于数据库的单元测试。它与JUnit和其他测试框架结合使用,可以帮助开发者在数据库层面上...结合源码学习和实践,你可以更深入地理解DBUnit 的功能,并将其有效地应用于你的项目中。

    单元测试JUnit4和DbUnit

    为了更好地学习和实践这些概念,文档"单元测试JUnit4和DbUnit.doc"可能包含了详细的步骤和示例代码,而"dbunitAndJunit4"和"junit4"这两个文件夹可能包含了相关的练习项目或者源码,通过阅读和运行这些代码,可以...

    DBUnit_Project_Study.rar

    而“dbunit_test”可能是实际的测试项目,包含配置文件、测试类和数据集文件,供学习者实践和理解DBUnit的工作原理。 总之,DBUnit是一个强大的数据库测试工具,通过它,开发者可以编写更稳定、更可靠的数据库驱动...

    DBUnit导数据报表名超长和MBCS字段被截断日志

    在IT行业中,数据库管理和数据导入导出是至关重要的任务,特别是在使用DBUnit这样的工具时。DBUnit是一款用于数据库测试的Java库,它...通过不断学习和实践,我们可以有效地解决这类问题,确保数据的准确导入和导出。

    dbunit_jar_and_htmldoc

    - 常见问题解答和最佳实践 总之,“dbunit_jar_and_htmldoc”压缩包是DBUnit的开发和使用的重要资源,包含运行库和详细的使用指南,对于需要进行数据库测试的Java开发者来说是非常有价值的参考资料。通过学习和应用...

    DBUnit测试规范[收集].pdf

    在编写DBUnit测试时,有几点最佳实践需要注意: - **数据准备**:创建清晰、独立的数据集,每个测试用例都应该有自己的数据环境。 - **断言**:使用适当的断言确保测试结果符合预期。 - **测试覆盖率**:尽可能覆盖...

    dbunit-maven-plugin:扩展和增强Codehaus的dbunit-maven-plugin项目

    **最佳实践** 1. **数据隔离**:为每个测试创建独立的数据集,防止测试之间相互干扰。 2. **合理使用数据类型**:XML数据集中正确表示特殊数据类型,如日期、时间戳等。 3. **维护数据集**:随着项目发展,定期更新...

    使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3

    本项目"使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3"正是针对这一目标进行的实践。下面将详细介绍这些技术及其在测试中的应用。 **EJB(Enterprise JavaBeans)** 是Java平台上的企业级组件...

    对dbunit进行mybatis DAO层Excel单元测试(必看篇)

    五、Dbunit测试实践 在mybatis DAO层中,可以使用dbunit来进行单元测试。首先,需要在pom.xml文件中添加相关的依赖项,然后创建一个unitils.properties配置文件,用于配置自定义拓展模块,数据加载等相关信息。接着...

    盖国强-Oracle数据库的DevOps实践-V2.zip

    4. **自动化测试**:使用SQL测试框架,如SQL Test或DbUnit,编写测试用例,对数据库的修改进行自动化验证,确保功能的正确性和性能。 5. **监控与日志管理**:通过Prometheus、Grafana等工具收集Oracle数据库的性能...

    数据库操作的单元测试

    **3.2.3 DBUnit的最佳实践是尽可能使用最小的数据集** 使用尽可能小的数据集可以加快测试速度,并减少测试期间的资源消耗。 **3.2.4 DatabaseOperation.CLEAN_INSERT 策略** 使用CLEAN_INSERT策略可以确保每个...

    单元测试实践小结[7]

    另外由于DBUnit导入数据的顺序 单元测试实践小结[7] 软件测试 第二个问题如何测试: 0.测试数据准备 可以将BA准备的数据导出。在利用Excel编辑产生一批数据。但是每个UnitTest测试本身应该focus一个关注点上,...

    dbuniit,loadrunnar,testng的一些资料

    这些资料集合了DbUnit的数据库测试实践,LoadRunner的性能测试策略,以及TestNG的测试设计和执行方法。对于软件测试工程师而言,熟练掌握这三个工具能够极大地提升测试效率和质量。DbUnit确保数据库层面的测试覆盖率...

    Unitils示例

    在本示例工程中,我们将会探讨 Unitils 如何与 DBUnit 和 EasyMock 集成,以实现高效的单元测试。 1. **Unitils 框架** Unitils 是一个开源的测试框架,旨在通过自动化常见的测试任务来提高测试效率。它支持 JUnit...

    slf4j-log4j12 等jar包.rar

    6. **日志实践**:在实际应用中,日志不仅用于调试,还可以用于监控系统性能、跟踪用户行为、生成审计日志等。合理的日志配置和使用策略,如日志级别设置、日志分割、日志归档等,都是提升系统稳定性和可维护性的...

Global site tag (gtag.js) - Google Analytics