Я сейчас работаю над примером приложения , используя Spring Boot, Spring Data JPA и Spring Data Elasticsearch.Я хочу иметь возможность запускать модульные тесты как часть сборки конвейера, но они требуют, чтобы Elasticsearch работал для работы, поскольку служба выполняет вызовы к указанному серверу ES.SQL работает нормально, потому что я использую экземпляр H2 в памяти.
Я реализовал некоторый код, чтобы попытаться запустить ES как «встроенный» сервер.Встроенный сервер работает просто отлично, но кажется, по крайней мере, насколько я могу судить, он запускается ПОСЛЕ загрузки контекста.Самое главное после того, как ElasticSearchConfiguration
сделает это.
Я думаю, что мне нужно реорганизовать код из AbstractElasticsearchTest в отдельный класс, который может выполняться до того, как ElasticSearchConfiguration
сгенерирует клиент / шаблон, но я не уверенкак это сделать, ни как Google сказал, что процесс.
Есть ли какой-нибудь механизм в Spring Boot, который можно было бы использовать для запуска встроенных серверов до запуска какой-либо из конфигураций?Или есть какой-то способ, которым я мог бы улучшить ElasticSearchConfiguration
, чтобы сделать это до создания клиента / шаблона, но только при запуске модульных тестов?
Редактировать: Так что, просто чтобы бытьнемного конкретнее ... я ищу средство / способ запуска ES 5 в "встроенном" режиме или как достаточно смоделировать код Spring Data ES, чтобы он работал на CI-сервере.Я знаю, что вышеприведенный код смешивает юнит-тесты с интеграционными тестами, поскольку в настоящее время он выполняет вызовы на физический сервер ES.Это то, что я пытаюсь исправить: я должен быть в состоянии ошарашить / смоделировать достаточно базового кода Spring Data, чтобы заставить модульный тест думать, что он говорит с реальной сделкой.Затем я могу изменить тесты, которые определяют, были ли документы сделаны в ES, и тестировать такие вещи, как поиск с опережением ввода, вместо того, чтобы быть интеграционными тестами, чтобы они не запускались при запуске CI или Sonar.