2015-06-25 4 views
5

Ich möchte Eigenschaften überschreiben, die in application.properties in Tests definiert sind, aber @TestPropertySource ermöglicht nur die Bereitstellung vordefinierter Werte.Standardmäßige Spring-Boot-Einstellungen von application.properties in Junit Test mit dynamischem Wert

Was ich brauche, ist einen Server auf einem zufälligen Port N zu starten, dann diesen Port zu Spring-Boot-Anwendung übergeben. Der Port muss flüchtig sein, damit mehrere Tests gleichzeitig auf demselben Host ausgeführt werden können.

Ich meine nicht den eingebetteten http-Server (Jetty), aber einige andere Server, die zu Beginn des Tests (z. B. Tierpfleger) gestartet wird und die Anwendung, die getestet wird, muss sich damit verbinden.

Was ist der beste Weg, dies zu erreichen?

(hier ist eine ähnliche Frage, aber Antworten eine Lösung für temporäre Ports nicht erwähnen - Override default Spring-Boot application.properties settings in Junit Test)

Antwort

2

Sie könnten den Wert der Port-Eigenschaft in den @BeforeClass wie dies außer Kraft setzen:

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

Gibt es eine Möglichkeit, diese Eigenschaften nach den Tests zu entfernen? Dies verschmutzt die JVM-Umgebung irgendwie. –

+0

Sie können die Eigenschaft mit System.clearProperty (Schlüssel) zurücksetzen oder sie auf den vorherigen Wert in der @AfterClass zurücksetzen – user3408654