Как я могу повторить откат из Entity Manager с JPA Repository? - PullRequest
0 голосов
/ 28 апреля 2019

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

Кроме того, я отказался от использования Entity Manager, вместо этого я создал репозитории, которые расширяют репозиторий JPA, чтобы я мог использовать функции оттуда. Единственное, что у меня есть несколько модульных тестов, и в среде Spring в конце каждого теста есть пункт finally, в котором есть откат, чтобы данные из базы данных были специфичными для каждого теста. Как я могу сделать это без Entity Manager? Я пытался использовать метод flush (), но безрезультатно ...

1 Ответ

0 голосов
/ 28 апреля 2019

По умолчанию тесты JPA данных являются транзакционными и откатываются в конце каждого теста.

Вы можете обратиться к Включение и отключение транзакций в весенней тестовой документации, в которой указано:

Аннотирование метода теста с помощью @Transactional приводит к запуску теста в транзакции, которая по умолчанию автоматически откатывается после завершения теста. Если тестовый класс аннотируется @Transactional, каждый тестовый метод в этой иерархии классов выполняется внутри транзакции. Методы тестирования, которые не аннотированы @Transactional (на уровне класса или метода), не выполняются в транзакции. Кроме того, тесты, аннотированные @Transactional, но имеющие тип распространения, установленный на NOT_SUPPORTED, не выполняются в транзакции.

Советы :

  • Если вы хотите зафиксировать транзакцию по той или иной причине, вы можете использовать аннотацию @Commit или менее @Rollback(false) на уровне метода или класса.
  • Если вы хотите выполнить код вне транзакции (до или после), вы можете использовать @BeforeTransaction и @AfterTransaction для открытых методов, которые не имеют возврата (return void), или для метода интерфейсов по умолчанию.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...