Просмотр данных из транзакционных тестов - Hibernate + Spring + MySQL - PullRequest
3 голосов
/ 15 апреля 2011

У меня есть куча тестов в приложении Hibernate / Spring.Вчера я перевел их с использования базового класса JUnit 3.8, предоставленного Spring, на класс JUnit 4.4.

Все отлично работает, потому что теперь мои тесты обернуты в транзакции, а созданные / измененные данные автоматически прокручиваютсяназад (вместо того, чтобы писать код для удаления вновь созданных объектов).

Единственная проблема заключается в том, что Я не могу заглянуть в базу данных во время выполнения теста. Если тест не пройден, я часто добавляюТочки останова в конце и просмотр базы данных MySQL через SQL Yog, чтобы увидеть, что происходит.Но сейчас я просто вижу пустые таблицы.(Я имею в виду интеграционные тесты, которые очень близко имитируют производство и фактически касаются базы данных.)

Я пытался установить глобальный уровень изоляции для чтения незафиксированным, но это не изменило тот факт, что я не вижуданные.Как я могу настроить Spring / Hibernate, чтобы позволить мне просматривать данные из другого процесса?

1 Ответ

1 голос
/ 16 апреля 2011

У меня была такая же проблема, и я обнаружил, что установка уровня изоляции сеанс при использовании YOG иногда помогает.

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

Это только выявило еще одну тревожную проблему - во время выполнения тестов Hibernate фактически не выполнял некоторые действия, если я не использовал HibernateTemplate.flush(); после каждой операции Hibernate. Как это очень раздражает, я, наконец, установил Hibernate, чтобы он всегда сбрасывал запросов, например:

HibernateTemplate hibernateTemplate;

... 

hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_ALWAYS);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...