Unitils

【已解决】mysql+unitils用@DataSet,抛NoSuchColumnException

≯℡__Kan透↙ 提交于 2019-11-29 01:24:48
是unitils的一个bug。 使用mysql,用@DataSet注入测试数据时,会抛出org.dbunit.dataset.NoSuchColumnException。 起因是新版本的dbunit(目前是2.4.9)细化了各种数据库的MetadataHandler的处理,为每一种数据库提供了一个MetadataHandler,如MySqlMetadataHandler,Db2MetadataHandler等。而unitils并没有升级(快两年没更新了,还会更新吗?),仍然使用dbunit提供的DefaultMetadataHandler。这个DefaultMetadataHandler并不能很好的处理各个数据库之间的不同,所以会导致兼容问题。 有一种解决方案是将dbunit降级成2.4.2版本,虽然能解决这个问题,但是会引入新的问题。如果在数据XML文件中写入同一个表的两条数据,如: <?xml version='1.0' encoding='UTF-8'?> <dataset> <t_role id="1" name="test1" version="0" /> <t_role id="2" name="test2" version="0" /> </dataset> 则会抛出org.dbunit.database.AmbiguousTableNameException

快速JavaEE轻量级框架&公用业务模块 设计&实现 6.1

落爺英雄遲暮 提交于 2019-11-29 01:22:39
使用unitils的dbunit模块进行测试。 真正的去访问数据库,每次测试之前打开一个事务,插入测试数据,业务操作,断言测试数据,回滚。 其中unitils+dbunit实现了除业务操作之外的所有步骤。 dbunit提供了将xml直接转换为数据库数据的功能。 unitils则进一步封装,提供了@DataSet,@ExpectDataset以及事务管理等功能,可以通过annotation的方式将数据文件导入数据库,也可以通过xml去断言数据,并且支持自动回滚,超级方便。 这里在使用 unitils整合dbunit的时候碰到了两个问题,记录一下。 关于问题,请分别查看下面两篇文章: unitils使用@DataSet插入测试数据,测试结束后不能回滚 mysql+unitils用@DataSet,抛NoSuchColumnException 最后,贴上一段标准DAO测试的代码: @DataSet public final class RoleDaoTest extends IntegrateBaseTest { @SpringBeanByType private RoleDao roleDao; @Test @ExpectedDataSet public void save() { Role role = new Role(); role.setName("Test Role");

Unitils and DBMaintainer - how to make them work with multiple users/schemas?

痞子三分冷 提交于 2019-11-28 05:46:43
问题 I am working on a new Oracle ADF project, that is using Oragle 10g Database, and I am using Unitils and DBMaintainer in our project for: updating the db structure unittesting read in seed data read in test data List item In our project, we have 2 schemas, and 2 db users that have privilegies to connect to these schemas. I have them in a folder structure with incremental names and I am using the @convention for script naming. 001_@schemaA_name.sql 002_@schemaB_name.sql 003_@schemaA_name.sql

Is Unitils project alive?

一曲冷凌霜 提交于 2019-11-28 02:09:42
问题 anybody knows whether unitils project is still alive. On there pages last version is 3.3 in maven repository it is 3.4.2.(Actually there is google cached version of their pages where the version is said to be 3.4.2) Anyway is there any replacement for this project. I kind of lack the vivid community around and really don't want to be bound to dying project. 回答1: Unitils seems to be almost abandoned nowadays. Project is available on the GitHub here and you can look at its history and activity.

【已解决】unitils使用@DataSet插入测试数据,测试结束后不能回滚

久未见 提交于 2019-11-27 20:49:40
使用@DataSet的时候,unitils使用的事务管理器必须在spring的配置文件中定义。 <bean id="dataSource" class="org.unitils.database.UnitilsDataSourceFactoryBean" /> 否则@DataSet会使用unitils的事务管理,而在测试方法里操作业务DAO会使用spring的事务管理,造成的后果是操作DAO生成的数据可以回滚,但是@DataSet导入的数据不能回滚。 来源: oschina 链接: https://my.oschina.net/u/719192/blog/173642

【让开发自动化】Unitils与DBUnit 兼容性问题

我与影子孤独终老i 提交于 2019-11-27 17:31:52
由于系统里用到了POI-3.5.FINAL用于Excel的处理,而unitils配套的DBUnit才2.2版本,与POI-3.5版本冲突,需要升级DBUnit的版本。目测最新版为2.4.9,与POI-3.5正好配套,一运行,出现如下异常: org.unitils.core.UnitilsException: Error inserting test data from DbUnit dataset for method public void com.litt.cidp.system.service.OperatorServiceTest.test_load() at org.unitils.dbunit.DbUnitModule.insertDataSet(DbUnitModule.java:156) at org.unitils.dbunit.DbUnitModule$DbUnitListener.beforeTestSetUp(DbUnitModule.java:557) at org.unitils.core.Unitils$UnitilsTestListener.beforeTestSetUp(Unitils.java:273) at org.unitils.UnitilsJUnit4TestClassRunner

【让开发自动化】Unitils对XML数据集扩展支持

社会主义新天地 提交于 2019-11-27 17:31:39
Unitils默认的DataSet仅支持Flat格式的XML数据集,如果测试数据多的话,不仅看起来不够美观,维护更是难上加难。DBUnit内置还支持MultiRow格式的数据集,Column的定义仅需一次,多条记录仅需增加Row即可;然而Unitils并不支持这种格式的数据集,其自己实现的MultiSchemaXmlDataSetFactory单独实现了XML内容的解析。 好在我们可以通过实现DataSetFactory接口很容易的扩展数据集的读取,这里我们将自定义一个XML数据集读取的实现,源代码如下: package com.litt.core.test.unitils.ext; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Properties; import org.dbunit.dataset.CompositeDataSet; import org.dbunit.dataset.DataSetException; import org.dbunit.dataset.xml

【让开发自动化】Unitils常见问题

雨燕双飞 提交于 2019-11-27 03:40:32
Unitils是一个非常好用的集成了多个测试组件的工具,但是在使用过程中也遇到了一些问题,特记录如下: 仅支持FlatXmlDataSet,不支持一个表有多条记录的情况;通过自己实现DataSetFactory支持额外的数据集格式。 现象:@ExpectedDataSet测试失败,未匹配到方法提交到数据库中的数据。 分析:检测结果显示通过@ExpectedDataSet获得的数据库数据并不包含方法执行提交的数据,怀疑为两者并没有共享同一个数据库连接,然而复核源码unitils用的也是DataSourceUtils,最后发现是spring自己维护了一个dataSource,Unitils也维护了一个dataSource,造成无法共享连接。 解决:修改spring配置文件,将dataSource改为: <bean id="dataSource" class="org.unitils.database.UnitilsDataSourceFactoryBean" /> 来源: oschina 链接: https://my.oschina.net/u/699015/blog/150795

spring-boot-unitils-starter完全spring boot化

☆樱花仙子☆ 提交于 2019-11-27 03:40:21
针对配置的问题进行改进,使其完全遵循spring boot规则 一、问题 在上一篇文章中,我们的配置都是放在unitils.properties,如下: unitils.modules=database,dbunit,springBoot unitils.module.springBoot.className=com.unitils.boot.SpringBootModule unitils.module.springBoot.runAfter=database unitils.module.springBoot.enabled=true #自扩展模块 unitils.module.dbunit.className=org.unitils.dbunit.DbUnitModule ############################################################################ ### Database模块相应配置 ### ############################################################################ ## Full qualified class name of an implementation of org.unitils.database

给spring-boot测试提供unitils支持的开源项目

不羁岁月 提交于 2019-11-26 16:42:42
一、unitils测试框架优缺点介绍 在unitils的支持下,xml配置的spring项目在测试时,有如下好处: 1、利用注解@DataSet、@ExpectedDataSet来准备数据和校验结果数据,每次运行测试用例不用重新准备数据。 2、利用@Transactional来配置测试时的事务模式:COMMIT(测试后提交数据)、ROLLBACK(测试后回滚数据,不会污染测试数据库) 3、可以基于单独的单元测试数据库进行单元测试 4、等等 利用unitils来进行单元测试,好处多多,单元测试对于开发人员来说,至关重要,首先可以检查程序是否按照预期运行,其次,过段时间后,只需要运行一下单元测试,就可以检车程序是否被修改出错,及时检查出问题。 但是,上述基于unitils的spring项目的单元测试都是在xml配置文件的基础之上,目前很多项目都是spring-boot项目,最新的unitils-3.4.6也不支持spring-boot的项目,因此,这里在查看unitils的源码的基础上,做了一个小的开源项目:spring-boot-unitils-starter来给spring-boot项目提供基于unitils支持。 二、spring-boot-unitils-starter项目介绍 1、项目结构如下 2、问题分析 在一中介绍到了unitils只支持xml形式的spring 项目