Solo para que otros que han configurado sus aplicaciones como la mía se beneficien de lo que pasé ...
Ninguna de las soluciones anteriores funcionó para mí porque tengo un ./config
directorio justo debajo de la base de mi proyecto con 2 archivos:
application.properties
application-dev.properties
En application.properties
tengo:
spring.profiles.active = dev # set my default profile to 'dev'
En application-dev.properties
tengo:
server_host = localhost
server_port = 8080
Esto es así cuando ejecuto mi fat jar desde la CLI, los *.properties
archivos se leerán desde el ./config
directorio y todo estará bien.
Bueno, resulta que estos archivos de propiedades anulan completamente la webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
configuración @SpringBootTest
en mis especificaciones de Spock. No importa lo que he intentado, incluso con webEnvironment
sistema de RANDOM_PORT
resorte que siempre se inicie el contenedor Tomcat incluido en el puerto 8080 (o cualquier valor que había puesto en mis ./config/*.properties
archivos).
La ÚNICA forma en que pude superar esto fue agregando un explícito properties = "server_port=0"
a la @SpringBootTest
anotación en mis especificaciones de integración de Spock:
@SpringBootTest (webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = "server_port=0")
Entonces, y solo entonces, Spring finalmente comenzó a activar Tomcat en un puerto aleatorio. En mi humilde opinión, este es un error del marco de prueba de Spring, pero estoy seguro de que tendrán su propia opinión al respecto.
Espero que esto haya ayudado a alguien.