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 ./config
directory appena sotto la mia base di progetto con 2 file:
application.properties
application-dev.properties
In application.properties
ho:
spring.profiles.active = dev # set my default profile to 'dev'
In application-dev.properties
ho:
server_host = localhost
server_port = 8080
Questo è così quando eseguo il mio fat jar dalla CLI i *.properties
file verranno letti dalla directory ./config
e tutto va bene.
Bene, risulta che questi file delle proprietà sovrascrivono completamente l' webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
impostazione @SpringBootTest
nelle mie specifiche Spock. Indipendentemente da ciò che ho provato, anche con webEnvironment
impostato su RANDOM_PORT
Spring 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 @SpringBootTest
annotazione 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.