Как изолировать интеграционные тесты?

При выполнении операций с базой данных во многих интеграционных тестах, как быть уверенным, что состояние базы данных одинаково до и после любого теста в автоматическом режиме (с некоторой структурой)?

Меня не интересует ручной способ (@Before@After)

Вы можете установить для фиксации транзакции значение false.

Pranalee 25.06.2018 15:06

Он может игнорировать некоторые ограничения базы данных

Nassim MOUALEK 25.06.2018 15:09

Вы можете использовать аннотацию @Sql? Напишите сценарий sql, который воссоздает состояние базы данных, и эта аннотация будет выполнять его перед каждым тестом, поэтому у вас будет одно и то же состояние для каждого теста.

Dimitar Spasovski 25.06.2018 21:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
227
1

Ответы 1

В моей компании мы делаем то, что

  1. Мы используем транзакции, чтобы гарантировать, что БД находится в том же состоянии после теста, что и раньше.
  2. Мы используем тестовые сценарии, которые гарантируют достоверность тестовых данных (например, добавление некоторых дополнительных строк в некоторые таблицы для определенных тестовых сценариев и обновление некоторых других). Вы можете выполнить эти сценарии в методах setUp, чтобы повторно использовать их в нескольких тестовых примерах или даже определить их в служебных классах, которые можно повторно использовать в нескольких наборах тестов.

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

Другие вопросы по теме