什么是dbunit以及为什么要使用它?
dbunit是一个基于junit扩展的数据库测试框架。它提供了大量的类对与数据库相关的操作进行了抽象和封装,虽然在80%的情况,你只需使用它极少的api。它通过使用用户自定义的数据集以及相关操作使数据库处于一种可知的状态,从而使得测试自动化、可重复和相对独立。虽然不用dbunit也可以达到这种目的,但是我们必须为此付出代价(编写大量代码,测试及维护),既然有了这么优秀的开源框架,我们又何必再造轮子。
dbunit的原理
dbunit的与单元测试相关的两个最重要的核心是org.dbunit.database.IDatabaseConnection 和 org.dbunit.dataset.IDataSet ,前者是产品代码使用的数据库连接的一个简单的封装,后者是对单元测试人员自定义的数据集(通常以xml文件的形式存在,且xml文件的格式也有好几种)的封装。
还有一个很重要的咚咚就是org.dbunit.operation.DatabaseOperation,该类是一个抽象类代表了对数据库的操作,例如CUD以及其组合等, 它采用了退化的工厂模式,可直接通过它获取其具体的子类(代表具体的某种操作)如下:
DatabaseOperation.UPDATE
DatabaseOperation.DELETE
DatabaseOperation.DELETE_ALL
DatabaseOperation.TRUNCATE
DatabaseOperation.REFRESH
DatabaseOperation.CLEAN_INSERT
DatabaseOperation.NONE
工作流程如下:
1)testcase.setup--->testcase.getConnection-->getDataSet----->operation.execute(
通常DatabaseOperation.CLEAN_INSERT)
2)testcase.testSomeMethod---->dao.someMethod
3)testcase.teardown---->operation.execute(
通常DatabaseOperation.DELETE_ALL或者DatabaseOperation.NONE)
实战
见:http://blog.csdn.net/pwlazy/archive/2006/05/08/713018.aspx
总结
通过与以前的例子比较发现:使用dbunit的testcase更自动化和可重复,以前写的testcase与数据库中的数据严重耦合,所以一般都不敢写断言,写了之后怕数据又发生变化,所以测试也是不可重复,并且也不是自动化,因为没有断言,你不得不测试完之后还得检查数据库。
当然dbunit也许并不是银弹,它在并发测试的时候得表现我没有实践过,也不敢妄下断言,而且是不是应该另外再建一个同样的数据专门测试dao还值得思考
我们在项目中为每个开发人员自建一个数据库解决并发问题,也许这个方案并非最佳,但实用
分享到:
相关推荐
dbunit入门实例 dbunit入门实例 dbunit入门实例 dbunit入门实例
最新的最全的dbunit jar包以及入门教程
DbUnit入门实战 摘自:http://blog.csdn.net/yuezu1026/archive/2009/04/08/4055923.aspx
用dbunit的两个例子,很不错,有帮助
单元测试入门学习,和dbunit结合开发
PHPUnit下载入门我们分发了一个PHP存档(PHAR),其中包含使用PHPUnit所需的一切。 只需从此处下载它,使其可执行,然后将其放入$ PATH中,例如:➜&nbs此扩展不再维护用于数据库交互测试的DbUnit PHPUnit扩展。 ...
快速入门示例Spring DBUnit提供了Spring测试框架和DBUnit项目之间的集成。 在这个例子中,我们展示了如何使用Hypersonic内存数据库测试Hibernate JPA项目。依存关系该项目将使用Apache Maven构建。 这是完整的POM...
本文介绍和对比了TestNG和junit框架,并举出实例说明。 同时讲解了Mockito和Dbunit框架的使用
Appfuse是由Matt Raible开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、struts、Xdoclet、junit 等基础框架给出了示范。提供了对Taperstry和JSF的支持。 AppFuse是一个集成了...
自己整理的一位牛人写的通向架构师的道路的博文,对架构师入门很有指导意义,列出章节如下: (第一天)之Apache整合Tomcat (第二天)之apache tomcat https应用 (第三天)之apache性能调优 (第四天)之Tomcat...
在后台广泛使用的一组测试工具: dbunit, reset -assured,xml-unit,json-unit 入门 1)安装 玛文 < groupId>io.github.adven27 < artifactId>exam-ms < version>5.0.0 Gradle testCompile " io.github....
第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao...
第2章 快速入门 2.1 实例功能概述 2.1.1 比Hello World更适用的实例 2.1.2 实例功能简介 2.2 环境准备 2.2.1 创建库表 2.2.2 建立工程 2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao...