1. 首先导入包。
在pom.xml中加入依赖
<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.4.9</version>
<scope>test</scope>
</dependency>
此时会导入三个包, dbunit, slf4j和commons-collections
2.创建dbunit的数据xml文件
dbunit在创建数据库的时候是根据我们的数据xml文件的内容来创建的。
所以这个文件是必不可少的。
格式如下:
<?xml version="1.0" encoding="utf-8"?>
<dataset>
<!-- 这是基于属性的节点存储方式 -->
<tablename column_name="data" column_name2="data2"/>
<t_user id="1" username="alleni" password="123"/>
<!-- 一个xml文件可以存放多个数据库table的内容-->
</dataset>
3. 创建dbunit的connection
dbunit需要一个连接数据库的connection,这个connection必须是当前项目的。
public class DbUtil {
public static Connection getCon(){
Connection con=null;
try {
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","admin","123");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
@Test
public void testLoad() throws DatabaseUnitException{
IDatabaseConnection con=new DatabaseConnection(DbUtil.getCon());
System.out.println(con);
}
[color=red]note: 这里可能会遇到SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
解决方法是加入dependecy
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.5</version>
</dependency>
[/color]
4.通过xml数据文件获取DataSet对象。
@Test
public void testLoad() throws DatabaseUnitException{
IDatabaseConnection con=new DatabaseConnection(DbUtil.getCon());
System.out.println(con);
/*
* FlatXmlDataSet用来获取基于属性存储的属性值
*
*/
IDataSet ds=new FlatXmlDataSet(new FlatXmlProducer(new InputSource(TestDbunit.class.getClassLoader().getResourceAsStream("t_user.xml"))));
System.out.println(ds);
}
5.执行DatabaseOperation的execute,进行数据库操作。
@Test
public void testLoad() throws DatabaseUnitException{
IDatabaseConnection con=new DatabaseConnection(DbUtil.getCon());
System.out.println(con);
/*
* FlatXmlDataSet用来获取基于属性存储的属性值
*
*/
IDataSet ds=new FlatXmlDataSet(new FlatXmlProducer(new InputSource(TestDbunit.class.getClassLoader().getResourceAsStream("t_user.xml"))));
System.out.println(ds);
//clean_insert表示先把数据库里的所有数据都清空,然后在把t_user.xml的数据插入进去
try
{
DatabaseOperation.CLEAN_INSERT.execute(con, ds);
}
catch (SQLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这里执行了之后,便会将t_user里的数据按照格式加入到数据库中。
=========================================
这里说一下最常见的一些问题:
1.org.dbunit.dataset.NoSuchColumnException: T_USER.USERNAME - (Non-uppercase input column: username) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive.
这种问题属于xml文件里的数据和数据库里的格式不对应。
上面的t_user.username就是xml表里的username.
而数据库里的t_user表中的column名称是name.
dbunit在数据库表中找不到username,便报错了。
2. org.dbunit.dataset.NoSuchTableException: t_user
at org.dbunit.database.DatabaseDataSet.getTableMetaData(DatabaseDataSet.java:288)
数据库中没有该table。
dbunit是不会帮助我们建立表格的。(可以看到t_user.xml中只指定了数据库表名和列名,并没有详细的数据格式信息)
在使用dbunit进行测试之前必须手动在数据库中创建表格。或者使用hibernate来创建。
3. 一些乱七八糟的错误: 今天折腾了一下午的错误,就是因为dbunit的数据库的链接是通过我们自定义jdbc的getCon方法的连接。 和Hibernate Spring毫无任何关系。这点要注意。
4. 个人感觉这个东西不熟练的情况下最好不要和实际运行数据库一起使用。本人昨天就把数据库数据带xml的测试数据一起给弄没了。TT
分享到:
相关推荐
数据集是 DBUnit 的基础,它通常是一个 XML 文件或者 CSV 文件,描述了测试用例中的预期数据库状态。这些文件包含了表的行和列,模拟了数据库中的数据。操作模式则定义了如何将数据集加载到数据库,比如 `CLEAN_...
**DbUnit 入门指南** DbUnit 是一个用于数据库测试的开源 Java 工具,它提供了数据驱动测试的框架,可以有效地管理和填充测试数据库。在软件开发中,尤其是在进行单元测试时,确保数据库状态的一致性至关重要。...
1. **初始化**: 首先,你需要创建一个 `IDatabaseConnection` 实例,连接到你的数据库。 2. **数据集准备**: 创建数据集文件,例如 `data.xml`,包含你想要加载到数据库的数据。 3. **设置表结构**: 定义数据库表...
标题“dbunit测试demo”表明这是一个关于如何使用 DBUnit 进行测试的实例。描述中提到的链接指向了一篇博客文章,这可能包含了一个具体的 DBUnit 测试用例的详细步骤和解释。尽管我们无法直接访问该链接,但我们可以...
DbUnit 是一种用于数据库集成测试的重要工具,它提供了TestCase 子类,用户可以在自己的测试类中扩展它们,但也可以独立于 JUnit 以其他方式来使用 DbUnit。DbUnit 的主要用途是准备数据库和验证数据库,它可以在...
DBUnit 是一个开源的 Java 库,专门用于数据库测试,它是 xUnit 测试框架的一部分,提供了数据驱动测试的解决方案。在版本 2.4.9 中,DBUnit 提供了一系列的功能,帮助开发者在进行单元测试时能够管理和操作数据库的...
Dbunit 是一个强大的Java库,专门用于数据库的测试和数据管理。它被广泛应用于软件开发过程中,特别是对于那些依赖于数据库的应用程序,因为Dbunit能够帮助开发者有效地管理和控制数据库的状态,确保测试的一致性...
DBUnit 是一个开源的 Java 库,专门用于数据库测试,它是 xUnit 测试框架(如 JUnit)的一个扩展。在数据库驱动的项目中,DBUnit 提供了一种结构化的方法来设置和验证数据库状态,从而确保测试的一致性和可靠性。这...
DBUnit是一款开源的Java库,专门用于数据库测试,它遵循TestNG或JUnit测试框架。这个HTML版的帮助文档是从官方站点`http://www.dbunit.org/apidocs/index.html`获取的,包含了DBUnit的所有核心功能和用法的详细说明...
DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类...
DBUnit 是一个强大的Java库,专门用于数据库的单元测试。它与JUnit和其他测试框架结合使用,可以帮助开发者在数据库层面上确保代码的正确性。DBUnit 提供了一种结构化的方式来导入和导出数据库数据,使得测试环境...
DBUnit 是一个开源的Java库,它扩展了JUnit框架,为数据库相关的单元测试提供了一种结构化的方法。在“dbunit2.2”这个压缩包中,包含了DBUnit 2.2版本的所有必要文件,使得开发者能够有效地进行数据库的单元测试。 ...
另一个实现是 `DatabaseDataSetAdapter`,它提供对数据库实例作为数据集的访问,通常通过 `IDatabaseConnection.createDataSet()` 方法创建。 下面是一个XML数据集的示例: ```xml <!DOCTYPE dataset SYSTEM "my-...
DBUnit 是一个开源的 Java 工具,它与JUnit结合使用,用于数据库的测试驱动开发(TDD)。在Java应用程序的测试过程中,确保数据库状态的一致性是非常重要的,DBUnit 提供了这样的功能,它允许开发者导入和导出数据库...
DBUNIT 是一个开源的 Java 库,专门用于数据库测试,它提供了一种结构化的方法来设置和验证数据库的状态。在软件开发中,测试是保证代码质量和功能正确性的重要环节,而 DBUNIT 尤其适用于对数据库操作进行测试,...
DBUnit是一个Java库,专门用于数据库测试,它能够帮助我们确保数据的一致性和完整性。这篇“DBUnit最佳实践之数据备份与恢复”博文中,作者分享了如何有效地利用DBUnit进行数据备份和恢复,这对于开发和测试环境中的...
dbunit的jar包,版本2.2