Begitu juga orang lain yang telah mengonfigurasi aplikasi mereka seperti milik saya mendapat manfaat dari apa yang saya alami ...
Tak satu pun dari solusi di atas berhasil untuk saya karena saya memiliki ./configdirektori tepat di bawah basis proyek saya dengan 2 file:
application.properties
application-dev.properties
Di application.propertiessaya punya:
spring.profiles.active = dev # set my default profile to 'dev'
Di application-dev.propertiessaya punya:
server_host = localhost
server_port = 8080
Ini jadi ketika saya menjalankan tabung lemak saya dari CLI *.propertiesfile akan dibaca dari ./configdir dan semuanya baik-baik saja.
Nah, ternyata file properti ini sepenuhnya menggantikan webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORTpengaturan di @SpringBootTestspesifikasi Spock saya. Tidak peduli apa yang saya coba, bahkan dengan webEnvironmentset ke RANDOM_PORTSpring akan selalu memulai wadah Tomcat yang disematkan pada port 8080 (atau nilai apa pun yang saya tetapkan di ./config/*.propertiesfile saya ).
SATU - SATUNYA cara saya dapat mengatasi ini adalah dengan menambahkan eksplisit properties = "server_port=0"ke @SpringBootTestanotasi dalam spesifikasi integrasi Spock saya:
@SpringBootTest (webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = "server_port=0")
Kemudian, dan baru kemudian Spring akhirnya mulai memutar Tomcat di port acak. IMHO ini adalah bug kerangka pengujian Musim Semi, tapi saya yakin mereka akan memiliki pendapat sendiri tentang ini.
Semoga ini membantu seseorang.