Я пытаюсь исправить набор тестов в проекте, который я унаследовал от другого программиста для некоторого кода базы данных Java. Сам проект использует hibernate и MySQL для работы с БД, но для целей тестирования используется dbunit. Я могу правильно загрузить и инициализировать фабрику сессий hibernate, но продолжаю получать исключения, когда пытаюсь запустить свои тесты в Eclipse, а именно: "org.dbunit.dataset.NoSuchTableException: mytablename".
Я знаю, что все файлы находятся в нужном месте, и что фактический файл XML, который я передаю в dbunit, в порядке (я использую тип FlatXmlDataSet). Мой метод setUp () в базовом классе теста базы данных выглядит следующим образом:
@Override
protected void setUp() throws Exception {
super.setUp();
IDataSet dataSet = new FlatXmlDataSet(new File(mDataFile));
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
IDatabaseConnection connection = new DatabaseConnection(session.connection());
DatabaseConfig config = connection.getConfig();
config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new HsqldbDataTypeFactory());
DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet);
session.getTransaction().commit();
}
Сразу после операции базы данных CLEAN_INSERT генерируется исключение с жалобой на последнюю таблицу в моем XML-файле , независимо от того, какая это таблица. Я проверил DTD и XML-схему вручную и с помощью Eclipse, даже приступая к тому, чтобы убедиться, что упорядочение таблиц в двух файлах совпадает. Я бы предпочел не вставлять эти файлы сюда (так как это потребовало бы большого количества замены поиска), но поверьте мне, что я просмотрел примеры dbunit и убедился, что синтаксис совпадает.
Есть идеи, что может быть не так? Я часами гуглю и ничего полезного не могу придумать.
Редактировать: Одна вещь, которую я забыл упомянуть, это то, что когда я помещаю точку останова на строку, которая выдает, я могу просмотреть структуру dataSet и увидеть, что все мои таблицы на самом деле там, а также со всеми данными испытаний. Так что, по крайней мере, эта часть, кажется, работает правильно.
@ Богдан: Хм ... хорошая идея. Я попытаюсь загрузить данные с помощью обычной вставки.
@sleske: Тоже хорошее предложение. Спасибо за подсказки; надеюсь, это поможет мне решить эту проблему.