Я хочу написать транзакционный модульный тест, чтобы изменения были отменены после завершения метода, но я столкнулся с проблемой из-за использования репозиториев hibernate и JPA. По некоторым причинам я получаю UnsupportedOperationException при попытке аннотировать метод @Test с @Transactional
Вот код, в котором я пытаюсь проверить логику удаления потерянных объектов, все в порядке, но я не хочу, чтобы эти объекты в базе данных после завершения метода.
@RunWith(SpringRunner.class)
@SpringBootTest
public class NotificationGroupServiceTest {
@Autowired
private NotificationGroupService notificationGroupService;
private NotificationGroupEntity groupEntity;
private Long groupId;
private NotificationCriterionEntity notificationCriterionEntity;
private HistoricalNotificationEntity historicalNotificationEntity;
@Before
public void initializeEntities() {
groupEntity = new NotificationGroupEntity();
groupEntity = notificationGroupService.createOrUpdate(groupEntity);
groupId = groupEntity.getId();
notificationCriterionEntity = new NotificationCriterionEntity();
historicalNotificationEntity = new HistoricalNotificationEntity();
notificationCriterionEntity.setNotificationGroupId(groupId);
historicalNotificationEntity.setNotificationGroupId(groupId);
groupEntity.setHistoricalNotifications(Arrays.asList(historicalNotificationEntity));
groupEntity.setActiveNotificationsList(Arrays.asList(notificationCriterionEntity));
}
@Test
public void testOrphanRemoval() {
notificationGroupService.createOrUpdate(groupEntity);
Optional<NotificationGroupEntity> optionalNotificationGroupEntity =
notificationGroupService.findById(groupId);
Assert.assertTrue(optionalNotificationGroupEntity.isPresent());
groupEntity = optionalNotificationGroupEntity.get();
Assert.assertEquals(1, groupEntity.getActiveNotificationsList()
.size());
Assert.assertEquals(1, groupEntity.getHistoricalNotifications()
.size());
Assert.assertEquals(groupEntity.getActiveNotificationsList()
.get(0)
.getNotificationGroupId(), groupId);
Assert.assertEquals(groupEntity.getHistoricalNotifications()
.get(0)
.getNotificationGroupId(), groupId);
groupEntity.setActiveNotificationsList(Arrays.asList());
groupEntity.setHistoricalNotifications(Arrays.asList());
notificationGroupService.createOrUpdate(groupEntity);
optionalNotificationGroupEntity =
notificationGroupService.findById(groupId);
Assert.assertTrue(optionalNotificationGroupEntity.isPresent());
groupEntity = optionalNotificationGroupEntity.get();
Assert.assertEquals(0, groupEntity.getActiveNotificationsList()
.size());
Assert.assertEquals(0, groupEntity.getHistoricalNotifications()
.size());
}
}