`

dbunit和poi版本不兼容的问题

 
阅读更多
   使用unitiles+dbunit 2.4.8,由于我的测试数据使用xls文件,所以需要用到poi库,但是dbunit只支持poi 3.2版本的,高版本时会报:
引用
java.lang.NoSuchMethodError: org.apache.poi.hssf.usermodel.HSSFDateUtil.isCellDateFormatted(Lorg/apache/poi/hssf/usermodel/HSSFCell;)Z
at org.dbunit.dataset.excel.XlsTable.getValue(XlsTable.java:145)
at com.book.test.unitilsext.dbunit.XslTableWrapper.getValue(XslTableWrapper.java:40)
at org.unitils.dbunit.dataset.SchemaFactory.addRows(SchemaFactory.java:128)
at org.unitils.dbunit.dataset.SchemaFactory.addTables(SchemaFactory.java:88)
at org.unitils.dbunit.dataset.SchemaFactory.createSchemaForDbUnitDataSet(SchemaFactory.java:45)
at org.unitils.dbunit.util.DataSetAssert.assertEqualDbUnitDataSets(DataSetAssert.java:70)
at org.unitils.dbunit.DbUnitModule.assertDbContentAsExpected(DbUnitModule.java:261)
at org.unitils.dbunit.DbUnitModule$DbUnitListener.afterTestMethod(DbUnitModule.java:563)
at org.unitils.core.Unitils$UnitilsTestListener.afterTestMethod(Unitils.java:301)
at org.unitils.UnitilsTestNG.run(UnitilsTestNG.java:114)


   参见:http://www.dbunit.org/dependencies.html
   由于dbunit团队好像已经好久没有发布版本(最新发布是2010年9月),但是trunk版本已经有人声称解决了这个问题:
   参见:http://dbunit.svn.sourceforge.net/viewvc/dbunit?view=revision&revision=1132
   但是,我不想麻烦自己编译dbunit,于是,我把poi换成3.2版本的,又报:

引用
java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFWorkbook
at org.dbunit.dataset.excel.XlsDataSet.<init>(XlsDataSet.java:75)


   原因是我对org.unitils.dbunit.datasetfactory.DataSetFactory进行了扩展,以支持多Sheet的XLS文件,这里我用到了POI高版本的类。
   好像进入了死锁状态,高低版本都不能用了!
  
   后来看到了这篇文章 :
http://mail-archives.apache.org/mod_mbox/poi-user/200910.mbox/%3Calpine.LFD.2.00.0910161316030.29288@grenache%3E说dbunit的二进制版本和>poi 3.2的不兼容,但是源码却是兼容的,需要下载dbunit的源码版本,更改pom.xml中的poi版本号,再编译,这样dbunit就可以支持高版本的poi的(即>3.2),没有办法,只依计而行。
  
步骤1:更改dbunit的pom.xml

   下载dbunit2.4.8版本,更改其pom.xml
<dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <!--原来是3.2,改为3.7 -->
      <version>3.7</version>
      <exclusions>
        <exclusion>
          <artifactId>log4j</artifactId>
          <groupId>log4j</groupId>
        </exclusion>
        <exclusion>
          <artifactId>commons-logging</artifactId>
          <groupId>commons-logging</groupId>
        </exclusion>
      </exclusions>
      <optional>true</optional>
    </dependency>

 
步骤2:重新编译

   mvn clean compile -Pmysql
   说明dbunit提供了很多数据库的方案,这时我选择mysql.

步骤3:将新编译的dbunit上传到私服nexus中
注:如果没有使用maven,直接将这个编译包放到lib目录中即可。

步骤4:更新自己项目的pom.xml,引用这个dbunit的构件


  这样着腾后,终于成功了。
分享到:
评论

相关推荐

    dbunit 多个版本.rar

    dbunit-2.2.3..jar dbunit-2.4.2.jar dbunit-2.5.3.jar dbunit-2.7.0.jar 发现每个版本对JDK是有要求的,比如2.7 只能用于JDK1.8版本,所以整理好几个jar包挑选适合自己的

    dbunit-2.4.9 源码

    在版本 2.4.9 中,DBUnit 提供了一系列的功能,帮助开发者在进行单元测试时能够管理和操作数据库的数据状态。 DBUnit 的核心功能包括: 1. 数据初始化:在测试前,DBUnit 可以导入 CSV、XML 或 Excel 文件中的数据...

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

    DBUnit 2.4.7 版本包含了所有的必需 jar 包,为开发者提供了完整的功能集。 DBUnit 的核心概念包括数据集、操作模式和数据类型映射。数据集是 DBUnit 的基础,它通常是一个 XML 文件或者 CSV 文件,描述了测试用例...

    DBUNIT使用

    DbUnit 的使用可以分为两个部分:设置 DbUnit 和使用 DbUnit 进行测试。要使用 DbUnit,首先需要从 http://dbunit.sourceforge.net 上下载 JAR 文件,将此 JAR 文件放在集成开发环境或构建脚本的类路径中,并且需要...

    Dbunit数据库连接下载

    pom.xml 文件是Maven项目对象模型的配置文件,如果你的项目使用Maven作为构建工具,可以通过这个文件来管理Dbunit的依赖,包括版本控制和其他依赖项的管理。 src 文件夹通常包含源代码,尽管在这个压缩包中没有详细...

    单元测试JUnit4和DbUnit

    为了更好地学习和实践这些概念,文档"单元测试JUnit4和DbUnit.doc"可能包含了详细的步骤和示例代码,而"dbunitAndJunit4"和"junit4"这两个文件夹可能包含了相关的练习项目或者源码,通过阅读和运行这些代码,可以...

    dbunit2.2

    在“dbunit2.2”这个压缩包中,包含了DBUnit 2.2版本的所有必要文件,使得开发者能够有效地进行数据库的单元测试。 DBUnit 的主要功能在于帮助开发者在执行测试前后对数据库进行初始化和清理,确保每次测试都在一个...

    DBUnit导数据报表名超长和MBCS字段被截断日志

    当数据库列无法容纳完整MBCS字符时,就会发生截断,这可能是因为列的宽度设置过小或者编码方式不兼容。在Sybase中,处理MBCS数据需要确保数据库配置正确,包括字符集设置和数据类型的选择。 描述中提到通过异常和...

    dbunit帮助文档(HTML版)

    获取的,包含了DBUnit的所有核心功能和用法的详细说明。虽然没有以常见的CHM(Compiled Help Manual)格式提供,但这个HTML压缩包依然能够为开发者提供全面的参考信息。 ### DBUnit简介 DBUnit是一个强大的工具,...

    DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类

    DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类DBUNIT 基类...

    dbunit-2.2.3-prj.rar_DbUnit 2.2_dbunit_单元测试

    DbUnit 2.2.3 版本是这个项目的一个特定版本,可能包含了针对该版本的一些改进和修复。 在单元测试中,数据库通常被视为外部资源,其状态可能影响到测试的结果。DbUnit 提供了一种方法来管理这些状态,允许开发者在...

    dbunit-2.2.jar

    dbunit的jar包,版本2.2

    dbunit使用必需Jar包

    在使用 DBUnit 时,有几个必需的 Jar 包是必不可少的,这些 Jar 包提供了 DBUnit 的核心功能以及与其交互所需的依赖。根据描述,这里有四个关键的 Jar 包: 1. **dbunit.jar**:这是 DBUnit 的主库,包含了所有的 ...

    介绍dbunit的使用和原理,核心组件介绍

    DbUnit 是一个针对数据库驱动项目的JUnit...在实际项目中,结合使用DbUnit和其他单元测试框架(如JUnit或TestNG),可以形成强大的测试解决方案,确保整个应用程序的质量,特别是在金融等对数据精确度要求极高的领域。

    dbunit测试demo

    7. **异常处理**:在测试过程中,如果数据不匹配或者数据库操作失败,DBUnit 将抛出异常,如 `ComparisonFailure` 或 `DatabaseUnitException`,帮助定位问题。 8. **自定义类型处理器**:DBUnit 默认支持基本数据...

    DBUnit 进行单元测试

    对于开发团队而言,使用DBUnit 可以提高测试覆盖率,减少因数据库问题导致的bug,同时也能简化回归测试过程,使得持续集成和交付流程更加顺畅。通过阅读链接中的博文(https://virgoooos.iteye.com/blog/186859),...

    DBUnit最佳实践之数据备份与恢复

    在IT行业中,数据库管理是至关重要的,特别是在软件开发和测试环节。...在实际项目中,理解和掌握DBUnit的最佳实践,不仅可以提高测试效率,还能确保数据安全,避免因意外数据丢失或损坏而导致的问题。

    dbunit开发文档

    在数据库驱动的项目中,DBUnit 提供了一种结构化的方法来设置和验证数据库状态,从而确保测试的一致性和可靠性。这篇开发文档将深入探讨 DBUnit 的核心概念、用法以及如何将其集成到你的开发流程中。 一、DBUnit ...

    dbunit使用实例

    3. **类型不匹配**: 如果遇到类型映射问题,可能需要自定义 `ColumnConfig` 并在数据集中指定。 通过深入理解和熟练使用 DBUnit,你可以更高效地管理测试数据,确保数据库相关的测试更加稳定和可靠。结合 JUnit 或...

Global site tag (gtag.js) - Google Analytics