2011-12-12 3 views
1

Я использую Spring, JPA, используя спящий режим для обслуживания -> dao layer. Сделки управляются весной. У меня есть проверочный тест, в котором мне нужно проверить наличие дубликатов данных и выбросить исключение.Сценарий транзакции Spring Junit4 для сценария проверки

В моей TestCase, что расширение AbstractTransactionalJUnit4SpringContextTests

Я настроил @TransactionConfiguration с defaultRollback как истинное и бобом имя для менеджера транзакций (в моем случае его боб из JpaTransactionManager)

я выполнить эту TestCase как указано ниже, шаги

  1. Создать запись с вызовом dao.create (entity); (Это получится)

  2. Создать же запись (со всеми атрибутами же, как указано в пункте 1) и вызовите dao.create (Entity) (это должно потерпеть неудачу, но его не подведет)

  3. В мой метод create (entity) Я вызываю метод validate(), который запускает скалярный объектный запрос (JPQL) для проверки.

Я ожидаю, что проверка будет неудачной, но это работает без исключения, и дублированные данные вставляются в БД.

Я пробовал отлаживать (включены журналы спящего режима), я обнаружил, что запрос выбора (скалярный запрос) не может получить правильные данные (в идеале он должен извлекать как минимум 1 запись, поскольку я вставил данные для нее в шаге 1, указанном выше .)

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

Есть ли другой способ написать тестовый пример для такого сценария, который включает в себя spring/jpa с гибернацией?

Пожалуйста, сообщите ваши мнения

Заранее спасибо!

ответ

0

Не могли бы вы вставить свой тест здесь, я считаю, что каждый тест работает в своей собственной транзакции, и у вас есть defaultRollback как истинный. Это должно быть проблемой.

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