Nur damit andere, die ihre Apps wie meine konfiguriert haben, von dem profitieren, was ich durchgemacht habe ...
Keine der oben genannten Lösungen hat für mich funktioniert, da ich ein ./configVerzeichnis direkt unter meiner Projektbasis mit 2 Dateien habe:
application.properties
application-dev.properties
In application.propertiesIch habe:
spring.profiles.active = dev # set my default profile to 'dev'
In habe application-dev.propertiesich:
server_host = localhost
server_port = 8080
Dies ist so, wenn ich mein Fat Jar über die CLI starte, werden die *.propertiesDateien aus dem ./configVerzeichnis gelesen und alles ist gut.
Nun, es stellt sich heraus, dass diese Eigenschaftendateien die webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORTEinstellung @SpringBootTestin meinen Spock-Spezifikationen vollständig überschreiben . Egal, was ich versucht habe, selbst wenn Spring webEnvironmenteingestellt ist, wird RANDOM_PORTder eingebettete Tomcat-Container auf Port 8080 immer gestartet (oder welcher Wert auch immer ich in meinen ./config/*.propertiesDateien festgelegt habe).
Die einzige Möglichkeit, dies zu überwinden, bestand darin properties = "server_port=0", der @SpringBootTestAnmerkung in meinen Spock-Integrationsspezifikationen eine explizite Anmerkung hinzuzufügen :
@SpringBootTest (webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = "server_port=0")
Dann und erst dann fing Spring endlich an, Tomcat an einem zufälligen Port hochzufahren. IMHO ist dies ein Spring Testing Framework Bug, aber ich bin sicher, dass sie ihre eigene Meinung dazu haben werden.
Hoffe das hat jemandem geholfen.