Тільки щоб інші, хто налаштував свої програми, такі як моя, отримали користь від того, що я пройшов ...
Жодне з наведених вище рішень не спрацювало для мене, оскільки у мене є ./config
каталог безпосередньо під моєю базою проекту з 2 файлами:
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
Це так, коли я запускаю свою жирну банку з CLI, *.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")
Тоді і лише тоді Весна нарешті почала крутити Tomcat на випадковому порту. IMHO - це помилка фреймворку тестування весни, але я впевнений, що у них буде своя думка щодо цього.
Сподіваюся, це комусь допомогло.