我有一个数据集(在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。
感谢。
答案 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中提取的模式名称)。