Тестирование Spring/Hibernate – как удалить схему после завершения?

Я пытаюсь изучить интеграционное тестирование с помощью Spring и Hibernate. Я хотел бы, чтобы он создавал схему перед запуском тестов и удалял ее после завершения тестов, чтобы они всегда начинались чистыми.

hibernate.hbm2ddl.auto=create-drop делает за меня первую часть: создает схему. Но как заставить его бросить?

Я тестирую его, развертывая свое приложение в JBoss. Схема создана правильно, но когда я отключаю или останавливаю сервер, она не удаляется. Как мне это сделать?


person Konrad Garus    schedule 24.03.2012    source источник


Ответы (4)


Одним из способов может быть регистрация пользовательского компонента в вашем applicationContext который реализует ApplicationListener<ContextClosedEvent> для получения событий завершения работы, вставьте JdbcTemplate в этот bean-компонент и позвольте ему вызвать DROP SCHEMA ... или сделать то, что вы хотите.

person Sean Patrick Floyd    schedule 25.03.2012

Если я правильно помню, это работает так

Первое развертывание: создает новые таблицы из схемы.

Второе развертывание: удаляет старые таблицы и создает

person Fixus    schedule 24.03.2012

вы должны написать слушателя, который реализует интерфейс ServletContextListener. При реализации этого интерфейса необходимо переопределить методы contextInitialized и contextDestroyed. В методе ContextDestroyed вы можете написать свой код схемы перетаскивания.

person kandarp    schedule 25.03.2012

Вы можете использовать что-то вроде DBUnit для управления созданием и удалением таблиц базы данных.

person TrueDub    schedule 25.03.2012