2016-03-06 3 views
0

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

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

Один из способов, я могу думать, чтобы добиться этого, было бы переопределить диспетчер транзакций и заставить метод фиксации ничего не делать и вызывать откаты в конце теста.

Одна вещь, которая касалась меня таким подходом, связана с кэшированием, как я могу убедиться, что каждое действие приводит к вызову базы данных, а не к кешу?

Я полагаю, что это должно быть чем-то, на что был дан ответ раньше - нет смысла изобретать колесо, так что я поступаю правильно?

Если это важно, я использую Hibernate и НЕ используя Spring.

ответ

0

Сделайте свой тестовый класс транзакционным и выполните откат в методе после тестирования. Вы можете сделать это в абстрактном суперклассе. Поэтому вам не обязательно делать это в каждом классе тестирования интеграции.

Вы должны решить, стоит ли отключать кеш при тестировании env или использовать кеш. Использование кеша может иметь побочные эффекты, но вы ближе к реальности. С другой стороны, вы можете протестировать уровень dao, а не кеш.

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