2014-01-29 13 views
0

Я пытаюсь ускорить запуск моего пакета тестов интеграции. Для каждого класса тестирования интеграции, который у меня есть, он воссоздает всю базу данных в памяти H2 с нуля перед запуском тестов - это занимает больше всего времени. Все методы, которые я тестирую, находятся в стеке Spring/Hibernate.Ускорить интеграционный тестовый комплект

Есть ли способ избежать воссоздания db для каждого теста, при этом db находится в чистом состоянии?

Некоторые методы Я тестирую методы вызова, которые запускают новые транзакции Hibernate, поэтому не уверены, можно ли начать новую транзакцию перед каждым тестом и отбросить все обратно.

+0

Кажется, что из этого сообщения http://stackoverflow.com/questions/5178708/how-to-rollback-nested-transactions-with-propagation-requires-new-in-integration нет простого способа сделать это, и лучшим решением является воссоздание db после каждого теста. – Glide

ответ

1

Это поведение по умолчанию (откат) при использовании @Transactional с @RunWith(SpringJunit4TestRunner.class).

Для получения полной информации смотрите Integration Testing Chapter.

+0

Выполняет ли тест отката db даже при его методах тестирования, которые имеют \t @Transactional (распространение = распространение_REQUIRES_NEW)? – Glide

+0

Также, если я помещаю 'Transaction' в уровень класса для каждого теста, это приведет к откату всех методов тестирования? – Glide

+0

Нет; 'REQUIRES_NEW' запускает новую транзакцию, которая будет передана перед возвратом в тестовый файл. Вам нужно будет добавить компенсационное обновление в тестовом случае, чтобы его отменить. Да, уровень класса '@ Transactional' делает все методы тестирования транзакционными. –

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