Если вы удалите @Transactional, ваша тестовая БД не будет пустой для другого теста и, следовательно, тесты не будут изолированы.
Если он у вас есть, некоторые тесты могут пройти, даже если они не пройдут (как вы описали, или другой пример, если вы вставляете сущность, которая дублирует какое-то уникальное ограничение).
Решение состоит в том, чтобы вместо @Transactional вставлять
@PersistenceContext
private EntityManager em;
и выполнять перед вами следующие действия.извлечь ваши данные из базы данных
em.flush();
em.clear();
Первая строка вызовет синхронизацию между сеансом и базой данных (ваш провайдер обычно ожидает до конца транзакции).Во второй строке удаляются все сущности из сеанса, поэтому все запросы поступают в базу данных.
А после теста все все еще откатывается, поэтому ваша база данных находится в исходном состоянии.
Надеюсь, что это такпомогает.