DBunit не может найти таблицы, определенные в наборе данных

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

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

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

Спасибо.


person Moon13    schedule 02.03.2011    source источник


Ответы (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);

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

person specialtrevor    schedule 21.05.2011