Пишу интеграционные тесты для сервисов с базой в памяти (
h2
). Сервисы не содержат никакой логики и просто вызывают аналогичные методы у ДАО. Также на сервисах стоят аннотации
@Transactional
(на уровне классов). Методы для чтения в сервисах помечены аннотациями
@Transactional(readOnly = true)
. Сейчас тестирую сервис для работы со справочником. Сама сущность справочника помечена аннотациями:
@Entity
,
@Immutable
,
@EntityListeners(PreventAnyUpdate.class)
.
public class PreventAnyUpdate {
@PrePersist
void onPrePersist(Object o) {
throw new RuntimeException("Can't create Entity!");
}
@PreRemove
void onPreRemove(Object o) {
throw new RuntimeException("Can't delete Entity");
}
}
Все тесты проходят, кроме тестов для
delete()
. Должен выбрасывать исключение, но не выбрасывает, а всё нормально удаляет (что вообще не должен делать). Что не так?