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 ./config
direktori tepat di bawah basis proyek saya dengan 2 file:
application.properties
application-dev.properties
Di application.properties
saya punya:
spring.profiles.active = dev # set my default profile to 'dev'
Di application-dev.properties
saya punya:
server_host = localhost
server_port = 8080
Ini jadi ketika saya menjalankan tabung lemak saya dari CLI *.properties
file akan dibaca dari ./config
dir dan semuanya baik-baik saja.
Nah, ternyata file properti ini sepenuhnya menggantikan webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
pengaturan di @SpringBootTest
spesifikasi Spock saya. Tidak peduli apa yang saya coba, bahkan dengan webEnvironment
set ke RANDOM_PORT
Spring akan selalu memulai wadah Tomcat yang disematkan pada port 8080 (atau nilai apa pun yang saya tetapkan di ./config/*.properties
file saya ).
SATU - SATUNYA cara saya dapat mengatasi ini adalah dengan menambahkan eksplisit properties = "server_port=0"
ke @SpringBootTest
anotasi 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.