Точно так же другие, которые настроили свои приложения, как мое, извлекли выгоду из того, через что я прошел ...
Ни одно из вышеперечисленных решений не помогло мне, потому что у меня есть ./config
каталог прямо под моей базой проекта с двумя файлами:
application.properties
application-dev.properties
У application.properties
меня есть:
spring.profiles.active = dev # set my default profile to 'dev'
У application-dev.properties
меня есть:
server_host = localhost
server_port = 8080
Это так, когда я запускаю свою толстую банку из интерфейса командной строки, *.properties
файлы будут прочитаны из ./config
каталога, и все будет хорошо.
Что ж, оказывается, что эти файлы свойств полностью отменяют webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
настройку @SpringBootTest
в моих спецификациях Spock. Независимо от того, что я пробовал, даже при webEnvironment
установке RANDOM_PORT
Spring всегда запускал встроенный контейнер Tomcat на порт 8080 (или любое другое значение, которое я установил в своих ./config/*.properties
файлах).
Только так , как я был в состоянии преодолеть это путь добавления явного properties = "server_port=0"
к @SpringBootTest
аннотации в моей интеграции спецификации Spock:
@SpringBootTest (webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = "server_port=0")
Тогда и только тогда Spring, наконец, начал запускать Tomcat на случайном порту. ИМХО, это ошибка фреймворка тестирования Spring, но я уверен, что у них будет собственное мнение по этому поводу.
Надеюсь, это кому-то помогло.