У меня есть приложение, указывающее на базу данных mysql.dbunit как синхронизировать реальную базу данных с тестовой базой данных
Я пытаюсь использовать DBUnit для настройки своих тестовых сред, что отлично работает.
Проблема в том, что при настройке DBUnit я указал его в СУБД MySQL. Поэтому, когда DBUnit выполняется, он принимает указанный файл dataset.xml и переопределяет информацию из моей исходной базы данных. что имеет смысл, потому что там, где я указываю это.
Вопрос в том, должен ли я создать новую базу данных только для тестов, чтобы мой DBUnit мог указать на нее? Если да, то как мне управлять синхронизацией структуры между моей исходной базой данных и темой для тестов?
Заранее спасибо.
Отличный ответ спасибо! Да, я использую hibernate-entitymanager, и, допустим, я использую Liquibase для управления базой данных mysql. Итак, вопрос, который приходит мне на ум: «Безопасно» использовать Hibernate DDL gen для создания схемы и ее таблиц для базы данных в памяти? или я должен найти способ использовать одну и ту же жидкость для обеих баз данных? –
Если команда правильно управляет сущностями, то, вероятно, очень «безопасно» использовать Hibernate DDL gen. Однако, если сущности не имеют всех необходимых аннотаций, тогда ваш лучший выбор - это конфигурация LiquiBase. Поскольку команда прилагает усилия, чтобы написать файлы LiquiBase, а LiquiBase имеет «основное определение» (и используется для производства), я бы использовал его вместо Hibernate DDL gen. Таким образом, тесты используют ту же конфигурацию, что и среды dev/test/prod. Это очень полезно и важно. – Jeff
Джефф, у меня есть еще одно сомнение. Мои DAO используют соединение, указанное в моем файле persistence.xml (to mysql) ...и мой dbunit использует связь, указанную в PropertyBasedJdbcDatabaseTester (до hsql) ... Поэтому, когда я запускаю тесты, DAO не указывают на мою базу данных в памяти. Не могли бы вы помочь мне решить этот вопрос? –