Проблемы во время ожидания в течение короткого промежутка времени, что очень часто встречается в распределенной системе.Чтобы избавиться от необходимости ждать слишком долго для тестового утверждения, есть небольшой инструмент под названием Awaitility .
. Таким образом, вы можете сделать намного более умное ожидание, запросив утверждение несколько раз,через определенные промежутки времени до достижения заданного времени ожидания (… и многих других).
Что касается вашего примера, попробуйте следующее:
Awaitility.await()
.pollInterval(new Duration(1, TimeUnit.SECONDS))
.atMost(new Duration(10, TimeUnit.SECONDS))
.untilAsserted(() ->
User user1 = userService.findbyId("1234");
assertThat(user1.getName()).isEqualTo(user.getName());
Что касается другой части вашего вопроса, в интеграционном тестевы могли бы на самом деле выполнить какое-то предварительное прогревание вашего экземпляра Redis
или, если у вас есть контейнерный интеграционный тест (например, Docker), вы можете запустить несколько первых запросов к нему или дождаться определенного условия , прежде чем начинать с вашеготесты.