Database DBunit可以';找不到数据集上定义的表

Database DBunit可以';找不到数据集上定义的表,database,unit-testing,postgresql,dbunit,Database,Unit Testing,Postgresql,Dbunit,我有一个数据集(用xml定义),我使用PostGreSQL、用JPA注释的POJO和用Junit进行测试 当测试运行时,它会在数据库中创建表和序列,但是当它开始读取带有表定义和列的数据集(xml)时,它会触发以下错误 org.dbunit.dataset.NoSuchTableException“nameoftable”我试图用所有大写字母和普通大写字母来表示表名,但它不起作用。该表是在公共模式中创建的,然后我尝试在xml中将该表定义为public。“nameoftable”,但它也不起作用。。

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

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

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


谢谢

使用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);
重要的一点是属性的设置;其余的是我用来使连接与DB或模式相关的东西(基于从hibernate配置XML中提取的模式名称)