dbunit入门 (一)基础实例
1. 首先导入包。
在pom.xml中加入依赖
3. 创建dbunit的connection
dbunit需要一个连接数据库的connection,这个connection必须是当前项目的。@Testpublic 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 blocke.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