2012-02-06 2 views
0

Мне было интересно, есть ли у кого были успехи в очистке содержимого базы данных перед каждым тестом при использовании jeeunit (или любой другой системы тестирования приложений java ee)?Как сбросить базу данных после каждого теста при использовании jeeunit?

Я попытался использовать аннотацию @Transactional, как описано в документации jeeunit, где он откатит все транзакции. Однако есть случаи (сеанс размывается), где сделанные изменения сохраняются между тестами, вызывая загрязнение теста.

Любая помощь/руководство оценено!

+0

Попытайтесь найти эту тему: http://stackoverflow.com/questions/9110726/database-base-unit-testing-strategy-truncating-tables-between-unit-tests-test –

+0

Я надеялся придерживаться существующий тестовый фрейм ... – netbrain

+0

Флеш() не совершает транзакцию, поэтому я подозреваю, что проблема должна быть где-то в другом месте, но это трудно сказать, если вы не предоставили больше контекста. Можете ли вы приложить тестовый пример к [этой проблеме] (http://code.google.com/p/jeeunit/issues/detail?id=20)? –

ответ

0

Моим решением было использовать jeeunit с h2 db и принудительно удалить все строки в базе данных через собственный SQL перед каждым тестом.

1

Поскольку вы упомянули «любые другие рамки тестирования приложений Java», я бы порекомендовал посмотреть на Arquillian Persistence Extension для модульного тестирования приложения Java EE. Вы можете найти учебник о том, как использовать его здесь: http://www.softwarepassion.com/java-ee-6-testing-with-arquillian-persistence-extension/

Более подробную информацию о arquillian себе here

+1

Использует альфа-версию лучшей идеи? – netbrain

+0

Снимок финала версии 1.0 уже доступен: https://github.com/arquillian/arquillian-extension-persistence – Kris

+1

Но что на самом деле означает Alpha? Что все сломано? В моих глазах это означает, что он, очевидно, может содержать ошибки, но он открыт для сообщества, чтобы сформировать свое направление с точки зрения API и функций. –

0

DBUnit разработан, чтобы помочь с этой конкретной проблемы - их сайт here

0

Spring AbstractTransactionalJUnit4SpringContextTests рамочные «s это еще одно хорошее начало.

И вы можете сделать это самостоятельно, установив autoCommit (false) перед выполнением в вашем соединении и откатом после запуска кода.

Смежные вопросы