DBunit не может найти таблицы, определенные в наборе данных - PullRequest
0 голосов
/ 03 марта 2011

У меня есть набор данных (определенный в xml), и я использую PostGreSQL, POJO, аннотированные JPA, и DbUnit с Junit для тестов.

Когда тест выполняется, он создает таблицы и последовательности в базе данных, но когда он начинает читать набор данных (xml) с определениями и столбцами таблиц, он запускает следующую ошибку org.dbunit.dataset.NoSuchTableException "nameoftable" Я попытался указать имя таблицы со всеми заглавными и обычными заглавными буквами, и оно не будет работать. Таблица была создана в общедоступной схеме, а затем я попытался определить в xml таблицу как общедоступную. "Nameoftable", но она также не будет работать ... какие-либо идеи?

Я пытался запустить этот тест с DUnit в следующих версиях: 2.2.2, 2.3.0 и 2.4.5.

Спасибо.

1 Ответ

1 голос
/ 21 мая 2011

С 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);

Важным битом является установка свойства;остальное я использую, чтобы связать соединение с БД или схемой (на основе имени схемы, извлеченного из XML-файла конфигурации hibernate).

...