คนอื่น ๆ ที่กำหนดค่าแอปของพวกเขาเช่นฉันจะได้รับประโยชน์จากสิ่งที่ฉันทำ ...
วิธีแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉันเพราะฉันมี./config
ไดเร็กทอรีใต้ฐานโปรเจ็กต์ที่มี 2 ไฟล์:
application.properties
application-dev.properties
ในapplication.properties
ฉันมี:
spring.profiles.active = dev # set my default profile to 'dev'
ในapplication-dev.properties
ฉันมี:
server_host = localhost
server_port = 8080
นี่คือเมื่อฉันเรียกใช้โถไขมันของฉันจาก CLI *.properties
ไฟล์จะถูกอ่านจาก./config
dir และทั้งหมดนั้นดี
ปรากฎว่าไฟล์คุณสมบัติเหล่านี้ลบล้างการwebEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
ตั้งค่าใน @SpringBootTest
ข้อกำหนด Spock ของฉันอย่างสมบูรณ์ ไม่ว่าฉันจะพยายามอะไรก็ตามแม้ว่าการwebEnvironment
ตั้งค่าเป็นRANDOM_PORT
Spring ก็จะเริ่มต้นคอนเทนเนอร์ Tomcat แบบฝังในพอร์ต 8080 (หรือค่าใดก็ตามที่ฉันตั้งไว้ใน./config/*.properties
ไฟล์ของฉัน)
เฉพาะทางที่ฉันก็สามารถที่จะเอาชนะนี้คือโดยการเพิ่มอย่างชัดเจนproperties = "server_port=0"
กับ@SpringBootTest
คำอธิบายประกอบในรายละเอียดสป็อคบูรณาการของฉัน:
@SpringBootTest (webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, properties = "server_port=0")
จากนั้นในที่สุด Spring ก็เริ่มหมุน Tomcat บนพอร์ตแบบสุ่ม IMHO นี่เป็นข้อผิดพลาดของ Spring testing framework แต่ฉันแน่ใจว่าพวกเขาจะมีความคิดเห็นของตัวเองเกี่ยวกับเรื่องนี้
หวังว่านี่จะช่วยใครสักคน