`
yonlist
  • 浏览: 83007 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[转] DbUnit 入门

阅读更多

什么是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

 

 

总结

 

通过与以前的例子比较发现:使用dbunittestcase更自动化和可重复,以前写的testcase与数据库中的数据严重耦合,所以一般都不敢写断言,写了之后怕数据又发生变化,所以测试也是不可重复,并且也不是自动化,因为没有断言,你不得不测试完之后还得检查数据库。

 

当然dbunit也许并不是银弹,它在并发测试的时候得表现我没有实践过,也不敢妄下断言,而且是不是应该另外再建一个同样的数据专门测试dao还值得思考

 

我们在项目中为每个开发人员自建一个数据库解决并发问题,也许这个方案并非最佳,但实用

 

分享到:
评论

相关推荐

    dbunit入门实例

    dbunit入门实例 dbunit入门实例 dbunit入门实例 dbunit入门实例

    dbunit-2.4.7所有jar以及dbunit入门教程

    最新的最全的dbunit jar包以及入门教程

    DbUnit入门实战

    DbUnit入门实战 摘自:http://blog.csdn.net/yuezu1026/archive/2009/04/08/4055923.aspx

    dbunit使用实例

    用dbunit的两个例子,很不错,有帮助

    单元测试JUnit4和DbUnit

    单元测试入门学习,和dbunit结合开发

    PHP / PHPUnit的DbUnit端口。-PHP开发

    PHPUnit下载入门我们分发了一个PHP存档(PHAR),其中包含使用PHPUnit所需的一切。 只需从此处下载它,使其可执行,然后将其放入$ PATH中,例如:➜&nbs此扩展不再维护用于数据库交互测试的DbUnit PHPUnit扩展。 ...

    spring-test-dbunit-example

    快速入门示例Spring DBUnit提供了Spring测试框架和DBUnit项目之间的集成。 在这个例子中,我们展示了如何使用Hypersonic内存数据库测试Hibernate JPA项目。依存关系该项目将使用Apache Maven构建。 这是完整的POM...

    junit和TestNG框架入门

    本文介绍和对比了TestNG和junit框架,并举出实例说明。 同时讲解了Mockito和Dbunit框架的使用

    Appfuse教程Appfuse开发.pdf

    Appfuse是由Matt Raible开发的一个指导性的入门级J2EE框架,它对如何集成流行的Spring、Hibernate、iBatis、struts、Xdoclet、junit 等基础框架给出了示范。提供了对Taperstry和JSF的支持。  AppFuse是一个集成了...

    通向架构师的道路

    自己整理的一位牛人写的通向架构师的道路的博文,对架构师入门很有指导意义,列出章节如下: (第一天)之Apache整合Tomcat (第二天)之apache tomcat https应用 (第三天)之apache性能调优 (第四天)之Tomcat...

    Exam:Concordion BDD框架扩展

    在后台广泛使用的一组测试工具: dbunit, reset -assured,xml-unit,json-unit 入门 1)安装 玛文 < groupId>io.github.adven27 < artifactId>exam-ms < version>5.0.0 Gradle testCompile " io.github....

    Spring.3.x企业应用开发实战(完整版).part2

    第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...

    Spring3.x企业应用开发实战(完整版) part1

    第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...

Global site tag (gtag.js) - Google Analytics