Я думаю, что проблема, с которой вы столкнулись, вызвана двумя внутренними транзакциями (одна внутри другой): первая находится внутри clientDao1.insert(user)
, а вторая - внутри вашего теста (при условии, что вы аннотировали свой тестовый класс с помощью @Transactional
или @DataJpaTest
, но вы этого не показали). Если RuntimeException
выбрасывается во внутренней транзакции, что имеет место из-за
Mockito.when(clientDao1.insert(user)).thenThrow(new RuntimeException());
, это означает, что ваш внутренний clientDao1.insert
метод не может восстановиться после этого исключения, а внешний метод (тестовый) не имеет ничего общего с скажем.
Вот почему данные НИКОГДА не будут записываться в базу данных или даже сохраняться (кэширование гибернации, конечно, если вы используете спящий режим в качестве поставщика JPA).