Поддержка 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 в настоящее время без случайного связывания необязательной зависимости?
Связанные вопросы, оставшиеся без ответа, которые, похоже, указывают на то, что это не новость:




Начиная с 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, чтобы добавить это в документацию.