คนอื่น ๆ ที่กำหนดค่าแอปของพวกเขาเช่นฉันจะได้รับประโยชน์จากสิ่งที่ฉันทำ ...
วิธีแก้ปัญหาข้างต้นไม่ได้ผลสำหรับฉันเพราะฉันมี./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ไฟล์จะถูกอ่านจาก./configdir และทั้งหมดนั้นดี
ปรากฎว่าไฟล์คุณสมบัติเหล่านี้ลบล้างการwebEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORTตั้งค่าใน @SpringBootTestข้อกำหนด Spock ของฉันอย่างสมบูรณ์ ไม่ว่าฉันจะพยายามอะไรก็ตามแม้ว่าการwebEnvironmentตั้งค่าเป็นRANDOM_PORTSpring ก็จะเริ่มต้นคอนเทนเนอร์ 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 แต่ฉันแน่ใจว่าพวกเขาจะมีความคิดเห็นของตัวเองเกี่ยวกับเรื่องนี้
หวังว่านี่จะช่วยใครสักคน