unitils据说测试的能力很强大,可测试dao,service,web层,其实对数据库的测试我更关心,看到有人展示了测试的方法,数据直接写在xls表中,很直观,然后就依照他们的方法进行试验,花费的时间比较多,前后应该有半个月,总是在各种地方卡壳。最后总算是搞出来了,大约有两个关键点,其一是百度文库中有个朋友在文章:dbunit经典的NoSuchColumnException解决之道 给出了应该使用dbunit2.4.9的版本,具体原因也没深究,然后在另一篇中:Unitils集成DBUnit的问题-解决方案 给出了继承DbUnitModule的方法,据此实践终于可以测试Dao层代码。

实验环境为win7 64bit,idea15.0.2

测试数据采用excel表的形式:

数据库脚本如下:

-- database schema automatically loaded by unitils before tests are run  fileName:001_create_schema.ddl

 

CREATE TABLE `t_user` (

  `user_id` int(11) NOT NULL auto_increment,

  `user_name` varchar(32) NOT NULL,

  `user_age` varchar(32) NOT NULL,

  PRIMARY KEY  (`user_id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

 

unitils.properties配置如下:

unitils.modules=database,dbunit,hibernate,spring,

#unitils.module.dbunit.className=org.unitils.dbunit.DbUnitModule

 

database.driverClassName=com.mysql.jdbc.Driver

database.url=jdbc:mysql://localhost:3306/test_ssh

database.dialect = mysql

database.userName=root

database.password=

 

database.schemaNames=test_ssh

 

updateDataBaseSchema.enabled=true

 

# unitils will construct the test database using the ddl file found in this directory

dbMaintainer.autoCreateExecutedScriptsTable=true

dbMaintainer.script.locations=resources/dbscripts

dataSetStructureGenerator.xsd.dirName=resources/xsd

 

 

DbUnitModule.DataSet.factory.default=com.tgb.test.dataset.excel.MultiSchemaXlsDataSetFactory

DbUnitModule.ExpectedDataSet.factory.default=com.tgb.test.dataset.excel.MultiSchemaXlsDataSetFactory

 

 

DbUnitModule.DataSet.loadStrategy.default=org.unitils.dbunit.datasetloadstrategy.impl.CleanInsertLoadStrategy

DatabaseModule.Transactional.value.default=commit

 

unitils.module.spring.className=org.unitils.spring.SpringModule

#unitils.module.spring.runAfter=database

unitils.module.spring.enabled=true

 

unitils.module.dbunit.className=org.unitils.dbunit.MySqlDbUnitModule

 

 

 

注意:unitils.module.dbunit.className需替换成自定义的类

 

unitils-local.properties配置如下:

####################################

# Default configuration of Unitils #

####################################

database.userName=root

database.password=root

dbMaintainer.keepRetryingAfterError.enabled=true

 

自定义类为:

/**

 * fileName:MySqlDbUnitModule.java

 */

package org.unitils.dbunit;

 

import org.dbunit.database.DatabaseConfig;

import org.dbunit.dataset.datatype.BooleanDataType;

import org.dbunit.ext.mysql.MySqlDataTypeFactory;

import org.dbunit.ext.mysql.MySqlMetadataHandler;

import org.hibernate.metamodel.relational.Database;

import org.unitils.dbunit.DbUnitModule;

import org.unitils.dbunit.util.DbUnitDatabaseConnection;

 

/**

 * Created by luhx on 2016-2-2.

 */

public class MySqlDbUnitModule extends DbUnitModule {

 

    @Override

    public DbUnitDatabaseConnection getDbUnitDatabaseConnection(

            final String schemaName) {

 

        DbUnitDatabaseConnection dbConn = super.getDbUnitDatabaseConnection(schemaName);

        dbConn.getConfig().setProperty(DatabaseConfig.FEATURE_CASE_SENSITIVE_TABLE_NAMES, Boolean.valueOf(true));//dbConn.getConfig().getProperty(schemaName)

        dbConn.getConfig().setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new MySqlDataTypeFactory());

        dbConn.getConfig().setProperty(DatabaseConfig.PROPERTY_METADATA_HANDLER, new MySqlMetadataHandler());

        return dbConn;

    }

}

 

由于我的数据库表字段均采用小写,因此

在载入DefaultDataSet时一定要将caseSensitiveTableName属性置为true,这样,就可以运行了

稍后会将代码整理出来一并上传。

关于unitils联合dbunit的测试的更多相关文章

  1. Unitils集成DBUnit、Spring-单元测试

    Unitils集成DBUnit.Spring-单元测试 1.maven-pom文件中引入相关jar包 <!-- Unitils -dbunit.Spring --> <depende ...

  2. Unitils集成DBUnit、Spring-单元测试(转)

    1.maven-pom文件中引入相关jar包 <!-- Unitils -dbunit.Spring --> <dependency> <groupId>org.u ...

  3. Unitils集成DBUnit的问题-解决方案

    Unitils在集成DBunit时,如果数据库是mysql时,就会出现一些如下: org.unitils.core.UnitilsException: Error inserting test dat ...

  4. 用Unitils测试BaseDao遇到的问题总结

    <Spring 3.0就这么简单>.(陈雄华,林开雄)第8章,对如何用Unitils进行测试简单介绍,下面是我用Unitils进行单元测试过程中遇到的问题的总结. 1.设置好pom.xml ...

  5. 使用Unitils测试DAO层

    Spring 的测试框架为我们提供一个强大的测试环境,解决日常单元测试中遇到的大部分测试难题:如运行多个测试用例和测试方法时,Spring上下文只需创建一次:数据库现场不受破坏:方便手工指定Sprin ...

  6. 测试整合之王Unitils

    16.4.1  Unitils概述(1) Unitils测试框架目的是让单元测试变得更加容易和可维护.Unitils构建在DbUnit与EasyMock项目之上并与JUnit和TestNG相结合.支持 ...

  7. dbunit进行DAO层Excel单元测试

    DAO层测试难点 可重复性,每次运行单元测试,得到的数据是重复的 独立性,测试数据与实际数据相互独立 数据库中脏数据预处理 不能给数据库中数据带来变化 DAO层测试方法 使用内存数据库,如H2.优点: ...

  8. 单元测试工具 unitils

    Unitils模块组件 Unitils通过模块化的方式来组织各个功能模块,采用类似于Spring的模块划分方式,如unitils-core.unitils-database.unitils-mock等 ...

  9. 基于dbunit进行mybatis DAO层Excel单元测试

    DAO层测试难点 可重复性,每次运行单元测试,得到的数据是重复的 独立性,测试数据与实际数据相互独立 数据库中脏数据预处理 不能给数据库中数据带来变化 DAO层测试方法 使用内存数据库,如H2.优点: ...

随机推荐

  1. sshd_config 配置文件

    Ssh-server 服务端 sshd_concfig Port Protocol HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_hos ...

  2. 自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客

    自动化运维工具Ansible详细部署 - 人生理想在于坚持不懈 - 51CTO技术博客 自动化运维工具Ansible详细部署

  3. Google辅助类软件

    本博文的主要内容有 .Google辅助类软件的介绍 .重点首推!  Google软件精选管理器 1.Google辅助类软件的介绍 1.  Google软件精选管理器的下载和安装使用 2.  Googl ...

  4. Git命令详解(一)-个人使用

    本文暂时不会涉及到团队如何使用Git的内容,而是从个人的角度探讨如何用好Git. 约定 绿色的5位字符表示提交的ID,文中用<commit>表示,分别指向父节点.分支用橘色显示,分别指向特 ...

  5. zy 送画

    问题描述 话说在军训的倒数第二天,zy终于下定决心要将画了 10天之久的画像送给他心怡的法学院mm.但是,他不敢自己一个人去,倒霉的 kk 只能和他一起去了.不过,为了表现的有诚意,kk和zy不能走在 ...

  6. VS2012的安装项目只能用InstallShield Limited Edition[附资源下载]

    以前版本的Visual Stuido中安装项目都可以使用微软自家的Visual Studio Installer,但是到了VS2012这一切都变了,只能用InstallShield Limited E ...

  7. Excel VBA批量修改文件夹下的文件名

    今天,有同事提出想批量修改文件名,规则比较简单,在第五位后加“-”即可, 上网没找到相关工具,就自己做了个excel,用宏代码修改. 代码如下: Private Sub CommandButton1_ ...

  8. ref和out的区别在c#中 总结

     ref 关键字使参数按引用传递.其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中.简单点说就是,使用了ref和out的效果就几乎和C中使用了指针变量一样.它能够让你 ...

  9. Matlab使用xlsread, xlswrite函数导致excel进程无法终止的问题

    系统版本:Win7 64位 Matlab版本:R2015b 问题描述:使用excel的操作函数,比如xlsread,xlswrite,导致excel进程无法终止,任务管理器中仍残留excel进程,打开 ...

  10. 文档对象模型操作xml文档

    简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规 ...