2015-06-25 10 views
5

Chcę nadpisać właściwości zdefiniowane w application.properties w testach, ale @TestPropertySource pozwala tylko dostarczyć predefiniowane wartości.Zastąp domyślne ustawienia Spring.program aplikacji w Test Junit z wartością dynamiczną

Potrzebne jest uruchomienie serwera na losowym porcie N, a następnie przekazanie tego portu do aplikacji rozruchu sprężynowego. Port musi być efemeryczny, aby umożliwić uruchamianie wielu testów na tym samym hoście w tym samym czasie.

Nie mam na myśli wbudowanego serwera http (pomostu), ale jakiś inny serwer, który jest uruchamiany na początku testu (np. Zookeeper) i testowana aplikacja musi się z nim połączyć.

Jaki jest najlepszy sposób, aby to osiągnąć?

(tutaj jest podobne pytanie, ale odpowiedzi nie wspominając rozwiązanie efemerycznych portów - Override default Spring-Boot application.properties settings in Junit Test)

Odpowiedz

2

mogłyby przesłonić wartość właściwości portu w @BeforeClass tak:

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

Czy istnieje sposób na usunięcie tych właściwości po testach? To w jakiś sposób zanieczyszcza środowisko JVM. –

+0

Możesz zresetować właściwość za pomocą System.clearProperty (klucz) lub przywrócić ją do poprzedniej wartości w @AfterClass – user3408654