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




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