Мое новое решение состоит в том, чтобы тестовые данные определялись как Spring bean-компоненты и связывались с ними как Resources по имени.Эта часть работает.
звучит как странная установка для юнит-теста.Честно говоря, я не совсем уверен, как вы это делаете.
В самом Поиске база данных в памяти (H2) используется вместе с директорией Lucene RAM.Преимущества такой настройки в том, что она позволяет быстро и легко избежать зависимости между тестами.
Я пытался сохранить эти bean-компоненты и проиндексировать их в методе setUp моих тестовых случаев (и в самих тестовых методах), но мне не удалось.Они хорошо попадают в БД, но я не могу их проиндексировать.
Если автоматическая индексация включена и в транзакции происходит сохранение тестовых данных, это должно работать.Распространенная ошибка в сочетании с Spring - использование неправильного менеджера транзакций.На форуме Hibernate Search есть множество тем, например, об этом - https://forum.hibernate.org/viewtopic.php?f=9&t=998155. Поскольку вы не даете никакой конкретной конфигурации и примеров кода, трудно дать более конкретный совет.
Я попробовал createIndexer (). StartAndWait ()
, это тоже хороший подход.Я бы порекомендовал этот подход, если вы хотите вставить не такую пару тестовых объектов, а целый набор данных.В этом случае может иметь смысл использовать каркас, такой как dbunit, для вставки тестовых данных, а затем вручную индексировать данные. createIndexer (). StartAndWait () - правильный инструмент для этого.Извлечение всей этой функции загрузки / сохранения / индексации в общий базовый класс тестирования - это путь.Базовый класс также может отвечать за всю загрузку Spring.
Опять же, чтобы дать более конкретную обратную связь, вы должны уточнить свой вопрос.