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 ./config
Verzeichnis direkt unter meiner Projektbasis mit 2 Dateien habe:
application.properties
application-dev.properties
In application.properties
Ich habe:
spring.profiles.active = dev # set my default profile to 'dev'
In habe application-dev.properties
ich:
server_host = localhost
server_port = 8080
Dies ist so, wenn ich mein Fat Jar über die CLI starte, werden die *.properties
Dateien aus dem ./config
Verzeichnis gelesen und alles ist gut.
Nun, es stellt sich heraus, dass diese Eigenschaftendateien die webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
Einstellung @SpringBootTest
in meinen Spock-Spezifikationen vollständig überschreiben . Egal, was ich versucht habe, selbst wenn Spring webEnvironment
eingestellt ist, wird RANDOM_PORT
der eingebettete Tomcat-Container auf Port 8080 immer gestartet (oder welcher Wert auch immer ich in meinen ./config/*.properties
Dateien festgelegt habe).
Die einzige Möglichkeit, dies zu überwinden, bestand darin properties = "server_port=0"
, der @SpringBootTest
Anmerkung 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.