Поддержка Spring Docker Compose недоступна во время выполнения при запуске тестов в Gradle

Поддержка Spring Docker Compose появилась в Spring Boot 3.1. Я настроил это для запуска и отключения служб Docker при выполнении ./gradlew bootRun, и это работает нормально. Затем в документации говорится, что следует использовать специальную обработку зависимостей developmentOnly, чтобы избежать ее объединения:

dependencies {
    developmentOnly("org.springframework.boot:spring-boot-docker-compose")
}

При запуске тестов @SpringBootTest они не могут создать bean-компоненты, поскольку службы не запускаются, и это ожидаемо, поскольку в официальной документации говорится, что поддержка по умолчанию отключена при запуске тестов:

По умолчанию поддержка Docker Compose в Spring Boot отключена при запуске тестов. Чтобы включить его, установите для Spring.docker.compose.skip.in-tests значение false.

Затем я сделал это, но все равно это не удалось. На самом деле не было никаких указаний на загрузку поддержки Docker Compose, что заставило меня задуматься, действительно ли инструкции верны... Итак, просто ради удовольствия я изменил developmentOnly на implementation и о чудо: это сработало!

Таким образом, кажется, что developmentOnly недостаточно, чтобы сделать зависимость доступной во время выполнения при запуске тестов, поэтому либо мне не хватает некоторой конфигурации, либо документы Spring и/или реализация для Gradle неверны.

Есть ли способ заставить это работать в Gradle в настоящее время без случайного связывания необязательной зависимости?

Связанные вопросы, оставшиеся без ответа, которые, похоже, указывают на то, что это не новость:

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
0
0
207
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Начиная с Spring Boot 3.2, для подобных ситуаций доступна конфигурация Gradle testAndDevelopmentOnly.

Если вы можете перейти на Spring Boot 3.2, измените объявление зависимости с

dependencies {
   developmentOnly("org.springframework.boot:spring-boot-docker-compose")
}

к

dependencies { 
   testAndDevelopmentOnly("org.springframework.boot:spring-boot-docker-compose")
}

Я создал проблему Spring Boot, чтобы добавить это в документацию.

Другие вопросы по теме