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

  Unitils在集成DBunit时,如果数据库是mysql时,就会出现一些如下:

  org.unitils.core.UnitilsException: Error inserting test data from DbUnit dataset for method......

  org.dbunit.dataset.NoSuchColumnException......

  出现如上两个报错的原因是:unitils默认使用的是“DefaultMetadataHandler.java”这个类去加载数据库信息,从而得不到数据库schema的值,DefaultMetadataHandler.java中的实现代码如下:

boolean areEqual =
                areEqualIgnoreNull(catalog, catalogName, caseSensitive) &&
                areEqualIgnoreNull(schema, schemaName, caseSensitive) &&
                areEqualIgnoreNull(table, tableName, caseSensitive) &&
                areEqualIgnoreNull(column, columnName, caseSensitive);

  这个时候的schemaName是空的,但是传进来的schema是有值的,从而报错!

  解决方案两种:

  1、改源代码,去掉catalog和schema的比较

  2、写一个拓展类,去继承DbUnitModule,代码如下:  

import org.dbunit.database.DatabaseConfig;
import org.dbunit.ext.mysql.MySqlDataTypeFactory;
import org.dbunit.ext.mysql.MySqlMetadataHandler;
import org.unitils.dbunit.DbUnitModule;
import org.unitils.dbunit.util.DbUnitDatabaseConnection;

public class MySqlDbUnitModule extends DbUnitModule {

    @Override
    public DbUnitDatabaseConnection getDbUnitDatabaseConnection(
            final String schemaName) {
        DbUnitDatabaseConnection result = dbUnitDatabaseConnections
                .get(schemaName);
        if (null != result) {
            return result;
        }
        result = super.getDbUnitDatabaseConnection(schemaName);
        result.getConfig().setProperty(
                DatabaseConfig.PROPERTY_DATATYPE_FACTORY,
                new MySqlDataTypeFactory());
        result.getConfig().setProperty(
                DatabaseConfig.PROPERTY_METADATA_HANDLER,
                new MySqlMetadataHandler());
        return result;
    }
}

  然后修改unitils-core的jar包下的unitils-default.properties文件,

  unitils.module.dbunit.className=org.unitils.dbunit.DbUnitModule 更改为如下:

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

  如果你使用自己定义的配置文件unitils.properties,则只需要修改自定义配置文件即可,就可以不需要修改jar中的unitils-default.properties

  当然出现这些问题的前提是所用数据库是mysql的情况下,以及解决方案~

 

转载:http://www.cnblogs.com/candle806/p/3807590.html

时间: 2024-08-30 13:14:37

Unitils集成DBUnit的问题-解决方案的相关文章

超大型系统的持续集成与持续交付解决方案与阿里宙斯盾

作者简介:鲁小川,09年本科毕业于浙江大学软件学院,之后就一直就职于阿里巴巴B2B质量保障部,目前是云效持续集成与持续交付解决方案的负责人. 以下内容根据演讲嘉宾分享以及PPT整理而成. 今天分享的议题是<超大型系统的持续集成与持续交付解决方案及案例分析>,主要就是和大家聊聊阿里巴巴B2B技术部这几年来在持续集成与持续交付上实践经验,以及为什么要做宙斯盾系统平台产品来支撑持续交付.宙斯盾平台在阿里内部经过了5年多的积累沉淀,现在已经对外服务输出了,对外服务产品的名字叫做云效平台,后面还会介绍云

直播|超大型系统的持续集成与持续交付的解决方案及案例分析

人人都在谈敏捷开发的时代,大型系统要保证产品质量,实现快速迭代却变得不易.那么大型系统如何实现持续集成持续交付,进行产品迭代发布呢? 9月7日晚上20:00阿里巴巴高级测试开发专家--鲁小川,将在阿里云•为大家现场直播,提供解决方案!与此同时,直播现场特别设置答疑环节,让观众与专家进行一次零距离的沟通交流! 直播详情 直播时间:2016-09-07 20:00:00 直播地址:http://yq.aliyun.com/webinar/play/69 (报名之后才能收看直播哦~) 直播内容 主题:

戴尔高集成的新数据中心解决方案

在IT界,集成性,顾名思义,就是把许多技术装备整合在一块,产生互助联想,以便提升IT效率.近日,戴尔就热情推出其新的高集成刀片数据中心解决方案. 戴尔表示,其数据中心解决方案整合集成包括服务器.存储和网络在内戴尔各产品线技术.高集成的戴尔刀片数据汇总新解决方案中包括最新戴尔第12代http://www.aliyun.com/zixun/aggregation/13737.html">刀片服务器.戴尔EqualLogic刀片阵列和可在单一平台切换的Force10 MXL刀片交换机. 戴尔服务

个人对持续集成的理解和实践

目前团队人数很少,也没有真正意义上的测试人员,那么如何保证代码质量呢?最近看了<持续交付--发布可靠软件的系统方法>很受启发,突然也想通了很多集成开发工具的设计理念,并做了一些实践,特别记录下来与众人分享. 如何保证代码质量 我觉得根本就是持续集成,确保代码服务器上的版本始终是可运行的.粗粒度上就是把功能分阶段做,每个阶段的功能是完整可发布的,这样有很多好处,尽早看到效果来调整.尽早发现bug.有成果可以鼓舞士气等等:细粒度上就是把每次提交的东西进行测试,让问题尽早暴露尽早修复. 如何达到这个

IBM DB2 OLAP多维服务器解决方案

突出特点 允许采用全面丰富的财务.数学和统计功能和计算功能,进行快速.直接分析 将关系型数据库的灵活性和多维存储的高性能结合在一起提供支持Web的平台,可实企业范围内信息轻松的访问可实现快速应用程序开发和数据建模可使多个用户同时对"what if(假定)"应用程序进行读写操作支持第三方分析工具,以实现集成的开放式商业智能解决方案. 在线分析处理(OLAP):一种新的业务发展前景 维持全球商业正常运行的精密的关系网络使得复杂性成为商业生活中面临的一个事实.今天,一家公司可能会拥有众多业务

大数据云计算项目解决方案求助

问题描述 需求如下:前提:mysql数据库里面有3000万条数据,有效数据(需要处理的数据)约为10%,月增长率为300万条需求:1.需求是一次性查询出源数据中有效数据300万条逐条执行,根据表中具体某一字段去三方(三方接口包括Dubbo接口以及Rest接口)请求执行条件,三方接口返回数据后判断本条数据是否满足执行条件,满足则触发执行规则,不满足则执行下一条2.第一批执行结束后,继续执行第二遍,二十四小时不停顿当前处理方案:Tomcat2台服务器集群每个tomcat十条线程合计二十个线程whil

甲骨文喻思成:大数据方案需要全面集成开放

[天极网服务器频道4月23日专稿]大数据的应用前景之广大已经毋庸置疑.企业CEO.CIO在讨论商业策略.IT模式创新时几乎言必谈大数据.Gartner发布的<Big Data Drives Rapid Changes in Infrastructure and $232 Billion in IT Spending Through 2016>(<大数据驱动基础架构的快速变化,2016年相关IT支出将达2320亿美元>)报告指出,2013年大数据带动的IT支出有望达到340亿美元;到

金航ERP企业资源计划管理系统解决方案

金航ERP是以集中管控.协同应用的企业http://www.aliyun.com/zixun/aggregation/13848.html">管理模式为背景,满足中国装备制造企业管理模式变革平稳过渡需要,符合企业管理发展趋势的新一代ERP软件.金航ERP突破了经典(传统)ERP应用模型的限制,融合了非典型制造业的管理特征和制造模式.通过引入PM.SCM.JIT思想,结合MRP原理,形成三大应用模式:1)研制+批产;2)集团制造供应链;3)典型离散制造.金航ERP面向离散制造业,专注装备制造

一个好的BYOD移动办公解决方案什么样?

本文讲的是 :  一个好的BYOD移动办公解决方案什么样?  ,[IT168 评论]近两年,BYOD(Bring Your Own Device,即自带设备办公)的"热度"持续走高,Gartner全球企业调研的结果显示,62%的全球企业CIO考虑或已经部署了BYOD;与此同时,Info-tech也预测2013年全球BYOD移动办公比例将达35%.由此我们不难看出,以BYOD为代表的移动办公将成为企业未来发展的必然趋势! 在这样的大趋势下,华为于2013年3月正式推出了BYOD移动办公解