首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Unitils/DBunit和数据库测试

Unitils/DBunit和数据库测试
EN

Stack Overflow用户
提问于 2011-04-19 16:11:20
回答 4查看 6.8K关注 0票数 4

我想尝试使用DBUnit进行单元测试,但我的数据集有问题。

下面是我的持久化对象:

代码语言:javascript
复制
@Entity
@Table(name = "personnes")
public class Personne implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer pk;

    @Column
    private String name;
}

和我的数据集:

代码语言:javascript
复制
<?xml version='1.0' encoding='UTF-8'?>
<dataset>
    <personnes name="toto"  pk="1" />
</dataset>

我的问题是name列,我得到了这个错误:

代码语言:javascript
复制
org.dbunit.dataset.NoSuchColumnException: personnes.NAME -  (Non-uppercase input column: name) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive.

我不明白为什么dbunit搜索"name“列,而我的列是"NAME”。

谢谢你的帮助。

EN

回答 4

Stack Overflow用户

发布于 2014-11-12 21:55:11

我已经和这个问题斗争了一段时间,并不断回到这个问题上来,这个问题似乎还没有解决方案。

在Unitils3.4.1中,他们添加了一个新属性org.dbunit.database.IMetadataHandler.implClassName

在我的unitils.properties文件中,我添加了以下行

代码语言:javascript
复制
org.dbunit.database.IMetadataHandler.implClassName=org.dbunit.ext.mysql.MySqlMetadataHandler

是的,我知道,根据Unitils的网站,没有3.4.1版本,但你可以通过Maven获得最新版本。

link to issue report

票数 4
EN

Stack Overflow用户

发布于 2011-07-06 15:57:41

由于您没有在映射中指定列名,我猜底层ORM框架会为它生成列名" name“。

要解决此错误/警告,可以将列名添加到映射中

代码语言:javascript
复制
@Column( name = "name")

产生小写列名或在数据集中使用大写表示法

代码语言:javascript
复制
<personnes NAME="toto"  pk="1" />

保留大写列名。

票数 0
EN

Stack Overflow用户

发布于 2012-03-21 16:35:12

您需要将以下内容设置为true

代码语言:javascript
复制
DatabaseConfig.FEATURE_CASE_SENSITIVE_TABLE_NAMES

在您的DatabaseConfig对象中。

请参阅org.dbunit.dataset.NoSuchTableException: Did not find table 'xxx' in schema 'null'

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5713433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档