Как сделать класс тестового примера jUnit4 Spring Test case? - PullRequest
0 голосов
/ 23 февраля 2011

У меня есть класс теста jUnit4 (расширяет TestCase).Я тестирую некоторый код, имеющий Spring DI и Hibernate.Каким-то образом, когда я выполняю тест, похоже, что некоторые внутренние транзакции откатывают мои тестовые изменения обратно.Я удаляю запись с помощью HibernateTemplate, но в базе данных ничего не удаляется.Я получил предложение сделать свой тестовый пример транзакционным, сделав мой класс тестовым классом Spring (с использованием Spring Test Runner) и использовать атрибут @Transactional перед вызовом метода.Может кто-нибудь сказать, пожалуйста, как я могу сделать мой тестовый класс Junit4 Spring тестовым классом?Какие конфиги мне нужны и какой класс расширить?

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

Ответы [ 3 ]

3 голосов
/ 23 февраля 2011

Расширьте AbstractTransactionalJUnit4SpringContextTests или добавьте эти аннотации к вашему тестовому классу:

@TestExecutionListeners(TransactionalTestExecutionListener.class)
@Transactional
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners( { DependencyInjectionTestExecutionListener.class,
DirtiesContextTestExecutionListener.class })
0 голосов
/ 23 февраля 2011

Все о тестировании Spring подробно объясняется в справочной документации .

Явление, которое вы испытываете, связано с тем, что Spring автоматически оборачивает тестовые методы в транзакции только для отката, когда класс тестового случая помечается @Transactional.Это имеет определенные преимущества: вы не повредите свою базу данных во время теста, и каждый тест работает с одними и теми же данными, поэтому вы не вводите зависимости между тестами.

0 голосов
/ 23 февраля 2011

Продлить AbstractJUnit4SpringContextTests.Я настоятельно рекомендую детальное чтение главы Тестирование .

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