Это всего лишь предположение, но здесь может произойти следующее:
1) Вы пометили весь тест для выполнения в определенной транзакции:
@Transactional
public class QuestionControllerTest {
2) Когда вы нажимаете метод post, он сохраняет сущность, но в рамках своей собственной / новой транзакции
ResponseEntity<Question> response = restTemplate.postForEntity("/question", req, Question.class);
Здесь все еще активна транзакция из 1), поэтому у вас есть 2 транзакции.
3) Поскольку сохранение было выполнено в отдельной транзакции, в то время как первая еще активна, первая еще не имеет доступа к данным, сохраненным транзакцией 2).
Решение
Поскольку репозитории Spring JPA по своей природе являются транзакционными, я бы удалил @Transactional
из тестовой конфигурации.
Теперь, когда вы нажмете questionRepository.findAll()
, это вызовет новую транзакцию, которая будет иметь доступ к данным, сохраненным в первой транзакции, сохраняя вопросник.