2015-06-25 15 views
5

Tôi muốn ghi đè các thuộc tính được xác định trong application.properties trong các thử nghiệm, nhưng @TestPropertySource chỉ cho phép cung cấp các giá trị được xác định trước.Ghi đè cài đặt ứng dụng Spring. Boot mặc định trong thử nghiệm Junit với giá trị động

Điều tôi cần là bắt đầu một máy chủ trên một cổng ngẫu nhiên N, sau đó chuyển cổng này sang ứng dụng khởi động mùa xuân. Cổng phải tạm thời để cho phép chạy nhiều thử nghiệm trên cùng một máy chủ tại cùng một thời điểm.

Tôi không có nghĩa là máy chủ http được nhúng (cầu cảng), nhưng một số máy chủ khác được bắt đầu vào lúc bắt đầu thử nghiệm (ví dụ: zookeeper) và ứng dụng đang được thử nghiệm phải kết nối với nó.

Cách tốt nhất để đạt được điều này là gì?

(đây là một câu hỏi tương tự, nhưng câu trả lời không đề cập đến một giải pháp cho các cảng phù du - Override default Spring-Boot application.properties settings in Junit Test)

Trả lời

2

Bạn có thể ghi đè giá trị của tài sản cảng trong @BeforeClass như thế này:

@BeforeClass 
public static void beforeClass() { 
    System.setProperty("zookeeper.port", getRandomPort()); 
} 
+0

Có một cách để loại bỏ các thuộc tính này sau khi thử nghiệm? Điều này bằng cách nào đó gây ô nhiễm môi trường JVM. –

+0

Bạn có thể đặt lại thuộc tính bằng cách sử dụng System.clearProperty (khóa) hoặc hoàn nguyên giá trị trước đó trong @AfterClass – user3408654

Các vấn đề liên quan