DBunit无法找到在数据集上定义的表

时间:2011-03-02 21:02:59

标签: database unit-testing postgresql dbunit

我有一个数据集(在xml中定义),我正在使用PostGreSQL,使用JPA注释的POJO和使用Junit进行测试的DbUnit。

当测试运行时,它会在数据库中创建表和序列,但是当它开始使用表定义和列读取数据集(xml)时,会触发以下错误 org.dbunit.dataset.NoSuchTableException“nameoftable”我试图将表的名称与所有大写字母和普通大写字母放在一起,但它不起作用。该表是在公共模式中创建的,然后我尝试在xml中将表定义为public。“nameoftable”但它也不起作用....任何想法?

我尝试在以下版本中使用DUnit运行此测试:2.2.2,2.3.0和2.4.5。

感谢。

1 个答案:

答案 0 :(得分:1)

使用DBUnit,您可以使用特定模式进行测试,也可以使用完整数据库(可能具有多个模式)。如果使用后者,则需要在导入/导出时在数据集中指定模式,否则可能会混淆;至少在PostgreSQL中,我没有尝试过其他任何东西。

要强制执行此操作,请在以下位置添加以下代码:

if (strSchema == null || strSchema.isEmpty()) {
    conn = new DatabaseConnection(jdbcConnection);
    conn.getConfig().setProperty(
            "http://www.dbunit.org/features/qualifiedTableNames", true);
}
else
    conn = new DatabaseConnection(jdbcConnection, strSchema);

重要的是设置属性;其余的是我用来使连接与数据库或模式相关的东西(基于从hibernate配置XML中提取的模式名称)。