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 ./configdirectorio justo debajo de la base de mi proyecto con 2 archivos:
application.properties
application-dev.properties
En application.propertiestengo:
spring.profiles.active = dev # set my default profile to 'dev'
En application-dev.propertiestengo:
server_host = localhost
server_port = 8080
Esto es así cuando ejecuto mi fat jar desde la CLI, los *.propertiesarchivos se leerán desde el ./configdirectorio y todo estará bien.
Bueno, resulta que estos archivos de propiedades anulan completamente la webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORTconfiguración @SpringBootTesten mis especificaciones de Spock. No importa lo que he intentado, incluso con webEnvironmentsistema de RANDOM_PORTresorte que siempre se inicie el contenedor Tomcat incluido en el puerto 8080 (o cualquier valor que había puesto en mis ./config/*.propertiesarchivos).
La ÚNICA forma en que pude superar esto fue agregando un explícito properties = "server_port=0"a la @SpringBootTestanotació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.