Juste pour que d'autres qui ont configuré leurs applications comme la mienne bénéficient de ce que j'ai vécu ...
Aucune des solutions ci-dessus n'a fonctionné pour moi car j'ai un ./config
répertoire juste sous ma base de projet avec 2 fichiers:
application.properties
application-dev.properties
Dans application.properties
j'ai:
spring.profiles.active = dev # set my default profile to 'dev'
Dans application-dev.properties
j'ai:
server_host = localhost
server_port = 8080
C'est le cas lorsque j'exécute mon gros pot à partir de la CLI, les *.properties
fichiers seront lus à partir du répertoire ./config
et tout va bien.
Eh bien, il s'avère que ces fichiers de propriétés remplacent complètement le webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
paramètre @SpringBootTest
de mes spécifications Spock. Peu importe ce que j'ai essayé, même avec webEnvironment
jeu àRANDOM_PORT
Spring, démarrerait toujours le conteneur Tomcat intégré sur le port 8080 (ou quelle que soit la valeur que j'avais définie dans mes ./config/*.properties
fichiers).
La SEULE façon dont j'ai pu surmonter cela a été d'ajouter une explicite properties = "server_port=0"
à l' @SpringBootTest
annotation dans mes spécifications d'intégration Spock:
@SpringBootTest (webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = "server_port=0")
Puis, et alors seulement, Spring a finalement commencé à faire tourner Tomcat sur un port aléatoire. À mon humble avis, il s'agit d'un bogue du cadre de test Spring, mais je suis sûr qu'ils auront leur propre opinion à ce sujet.
J'espère que cela a aidé quelqu'un.