Тест Transactional in Spring не работает - PullRequest
0 голосов
/ 26 февраля 2020

Я использую транзакции Spring (@Transactional) в моем тесте. По сути, у меня есть слой DAO, где у каждого метода есть @Transactional. В тестовом классе, если я не укажу @Transactional, я могу видеть данные в базе данных (поэтому данные сохраняются), в противном случае добавление в @Transactional для класса не сохранит данные. Однако после завершения теста данные сохраняются.

Знаете ли вы, почему он это делает?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Некоторый код вашего тестового класса был бы полезен, поэтому я могу только догадываться ...

Как вы сохраняете данные в базе данных? Если вы используете метод Repository.save(E Entity), то изменения не будут сброшены в БД. Они будут сохранены только в кеше первого уровня.

Если вы хотите передать sh ваши данные в БД, вам следует использовать TestEntityManager в вашем тестовом классе и вызвать метод persistFlushFind(E entity), чтобы действительно грипп sh ваша сущность в БД.

0 голосов
/ 26 февраля 2020

Когда вы добавляете аннотацию @Transactional, Spring запустит новую транзакцию, связанную с вашим методом тестирования, и обратные вызовы @Before, @After, а когда тест завершится, транзакция будет автоматически откатана.

https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#testcontext -TX

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