2013-04-26 4 views
0

Мы запускаем тесты junit для тестирования нашей java-кодовой базы. Каждый тест будет читать/записывать некоторые данные в базу данных mysql (возможно, несколько таблиц). Кажется, что тесты оставляют за собой данные, которые мешают испытаниям, которые запускаются после него. Возможно ли, что мы можем отменить/отменить все изменения, сделанные в результате теста в конце каждого модульного теста?Откат вложенной транзакции в java

Мы используем основу кактуса для тестирования ejbs в сервере приложений для стеклянной рыбы. Ejbs может вызывать код в AS, который может читать/записывать в БД.

Мы используем hibernate и jdbc для связи с БД.

+0

Ваше приложение - трехуровневое приложение (контроллер, службы и daos i.e.)? И что вы используете для доступа к базе данных (hibernate, jpa, jdbc)? –

+0

Как вы управляете транзакциями? HibernateTransactionManager или Контейнер JTA? –

+0

Процесс транзакции Mysql: http://dev.mysql.com/doc/refman/5.0/ru/commit.html –

ответ

0

Возможное решение будет сброс базы данных после каждого теста с помощью простого скрипта базы данных можно запустить после каждого теста, но это будет потреблять много времени.

Если вы используете интеграционные тесты, то вы будете использовать реальные EJB, вы не можете сделать этого, потому что было бы сложно понять их, когда тест начинается и заканчивается. Для простой операции вы можете заставить исключение вызвать откат, но если вы используете более одной транзакции в одном тесте, это не сработает.

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