Solo così gli altri che hanno configurato le loro app come la mia beneficiano di quello che ho passato ...
Nessuna delle soluzioni di cui sopra ha funzionato per me perché ho una ./configdirectory appena sotto la mia base di progetto con 2 file:
application.properties
application-dev.properties
In application.propertiesho:
spring.profiles.active = dev # set my default profile to 'dev'
In application-dev.propertiesho:
server_host = localhost
server_port = 8080
Questo è così quando eseguo il mio fat jar dalla CLI i *.propertiesfile verranno letti dalla directory ./confige tutto va bene.
Bene, risulta che questi file delle proprietà sovrascrivono completamente l' webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORTimpostazione @SpringBootTestnelle mie specifiche Spock. Indipendentemente da ciò che ho provato, anche con webEnvironmentimpostato su RANDOM_PORTSpring avvierei sempre il contenitore Tomcat incorporato sulla porta 8080 (o qualunque valore avessi impostato nel mio./config/*.properties file).
Il solo modo in cui sono stato in grado di superare questo è stato con l'aggiunta di un esplicito properties = "server_port=0"alla @SpringBootTestannotazione nei mie specifiche di integrazione Spock:
@SpringBootTest (webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = "server_port=0")
Poi, e solo allora, Spring ha finalmente iniziato a far girare Tomcat su una porta casuale. IMHO questo è un bug del framework di test di primavera, ma sono sicuro che avranno la loro opinione su questo.
Spero che questo abbia aiutato qualcuno.