经过下午和晚上的摸索,基本上已经搞定了DBUnit。说实在话,我觉得DBUnit比较简单,如果我去设计的话,应该也能够设计得比较好。不过,我只对MYSQL, HSQLDB稍微熟悉一点,其它的数据库就不行了
好了,闲话少说。
在开始DBUnit实践之前,我调查了相关的DBUnit的资料,调查了一些做DAO测试的观点和看法。
- 目前,最有效的方法是利用脚本来重建数据库。测试前去drop表,然后create表,然后再进行测试。
- 每一个开发人员需要搞一个数据库实例。不能公用一个数据库。单元测试数据库最好和开发数据库分开。HSQLDB内存数据库值得尝试(我不推荐)。
-
使用spring的AbstractTransactionalDataSourceSpringContextTests。在每个testcase开始之前,会自动开启一个事务,然后在结束的时候进行事务回滚。这样就可以隔绝几个测试用例之间的相互干扰。这很重要,才能够实现测试的自动化。
- 测试DAO不如连数据库一起测试吧。因为DAO测试的目的不是DAO接口实现对不对,而是测试是否如你预期的发送了SQL,如你预期的返回了结果集。这个时候你Mock之后,测试就没有意义了。
- 在SpringSide中,利用DBUnit提供的数据库准备和回收工作,提供三种数据库连接配置,采用Excel为数据源,提供两种数据库的配置和回收的应用策略。(我看过源代码了,相当简单,对DBUnit进行了下封装,把自己想要的功能给提取出来了,感谢。)
上述观点和做法,对我实践DBUnit有很大帮助。最后,去DBUnit站点,读了一下关于DBUnit的Core Component部分,其实就三部分:
- DataSet: 这个是我们需要准备的测试数据。
- DatabaseOperation: 对数据库的操作,有几种不同的操作,文档写得比较清楚。
- 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相关资料:
分享到:
相关推荐
在本文中,我们将深入探讨 DBUnit 的最佳实践,聚焦于数据库的增删改查操作,帮助您优化测试流程,提升软件质量。 1. **数据初始化**: 在开始任何数据库操作之前,DBUnit 提供了 `IDatabaseConnection` 接口来...
这篇“DBUnit最佳实践之数据备份与恢复”博文中,作者分享了如何有效地利用DBUnit进行数据备份和恢复,这对于开发和测试环境中的数据管理至关重要。 首先,我们需要了解DBUnit的基本概念。DBUnit是一个JUnit扩展,...
DBUnit 是一个 Java 开发者常用的数据库测试工具,它与JUnit等测试框架配合,能够帮助开发者在测试...通过以上实践,我们可以高效地利用DBUnit与Ant集成,实现数据库的自动化测试和管理,提升项目的测试效率和质量。
**dbunit帮助文档(HTML版)** DBUnit是一款开源的Java库,专门用于数据库测试,它遵循TestNG或JUnit测试框架。...通过深入学习和实践,你可以更有效地管理和维护数据库状态,确保测试的质量和可靠性。
DBUnit 是一个强大的Java库,专门用于数据库的单元测试。它与JUnit和其他测试框架结合使用,可以帮助开发者在数据库层面上...结合源码学习和实践,你可以更深入地理解DBUnit 的功能,并将其有效地应用于你的项目中。
为了更好地学习和实践这些概念,文档"单元测试JUnit4和DbUnit.doc"可能包含了详细的步骤和示例代码,而"dbunitAndJunit4"和"junit4"这两个文件夹可能包含了相关的练习项目或者源码,通过阅读和运行这些代码,可以...
而“dbunit_test”可能是实际的测试项目,包含配置文件、测试类和数据集文件,供学习者实践和理解DBUnit的工作原理。 总之,DBUnit是一个强大的数据库测试工具,通过它,开发者可以编写更稳定、更可靠的数据库驱动...
在IT行业中,数据库管理和数据导入导出是至关重要的任务,特别是在使用DBUnit这样的工具时。DBUnit是一款用于数据库测试的Java库,它...通过不断学习和实践,我们可以有效地解决这类问题,确保数据的准确导入和导出。
- 常见问题解答和最佳实践 总之,“dbunit_jar_and_htmldoc”压缩包是DBUnit的开发和使用的重要资源,包含运行库和详细的使用指南,对于需要进行数据库测试的Java开发者来说是非常有价值的参考资料。通过学习和应用...
在编写DBUnit测试时,有几点最佳实践需要注意: - **数据准备**:创建清晰、独立的数据集,每个测试用例都应该有自己的数据环境。 - **断言**:使用适当的断言确保测试结果符合预期。 - **测试覆盖率**:尽可能覆盖...
**最佳实践** 1. **数据隔离**:为每个测试创建独立的数据集,防止测试之间相互干扰。 2. **合理使用数据类型**:XML数据集中正确表示特殊数据类型,如日期、时间戳等。 3. **维护数据集**:随着项目发展,定期更新...
本项目"使用EJB+Struts1.3+Ant+Cactus+DbUnit+JMeter+StrutsTest实现测试3"正是针对这一目标进行的实践。下面将详细介绍这些技术及其在测试中的应用。 **EJB(Enterprise JavaBeans)** 是Java平台上的企业级组件...
五、Dbunit测试实践 在mybatis DAO层中,可以使用dbunit来进行单元测试。首先,需要在pom.xml文件中添加相关的依赖项,然后创建一个unitils.properties配置文件,用于配置自定义拓展模块,数据加载等相关信息。接着...
4. **自动化测试**:使用SQL测试框架,如SQL Test或DbUnit,编写测试用例,对数据库的修改进行自动化验证,确保功能的正确性和性能。 5. **监控与日志管理**:通过Prometheus、Grafana等工具收集Oracle数据库的性能...
**3.2.3 DBUnit的最佳实践是尽可能使用最小的数据集** 使用尽可能小的数据集可以加快测试速度,并减少测试期间的资源消耗。 **3.2.4 DatabaseOperation.CLEAN_INSERT 策略** 使用CLEAN_INSERT策略可以确保每个...
另外由于DBUnit导入数据的顺序 单元测试实践小结[7] 软件测试 第二个问题如何测试: 0.测试数据准备 可以将BA准备的数据导出。在利用Excel编辑产生一批数据。但是每个UnitTest测试本身应该focus一个关注点上,...
这些资料集合了DbUnit的数据库测试实践,LoadRunner的性能测试策略,以及TestNG的测试设计和执行方法。对于软件测试工程师而言,熟练掌握这三个工具能够极大地提升测试效率和质量。DbUnit确保数据库层面的测试覆盖率...
在本示例工程中,我们将会探讨 Unitils 如何与 DBUnit 和 EasyMock 集成,以实现高效的单元测试。 1. **Unitils 框架** Unitils 是一个开源的测试框架,旨在通过自动化常见的测试任务来提高测试效率。它支持 JUnit...
6. **日志实践**:在实际应用中,日志不仅用于调试,还可以用于监控系统性能、跟踪用户行为、生成审计日志等。合理的日志配置和使用策略,如日志级别设置、日志分割、日志归档等,都是提升系统稳定性和可维护性的...