2015-06-25 6 views
5

voglio ignorare proprietà definite in application.properties nei test, ma @TestPropertySource permette solo di fornire i valori predefiniti.Override predefinita Primavera-Boot application.properties impostazioni in Junit di prova con valore dinamico

Che cosa ho bisogno è quello di avviare un server su una porta casuale N, quindi passare questa porta alla primavera-boot applicazione. La porta deve essere effimera per consentire l'esecuzione di più test sullo stesso host nello stesso momento.

Non intendo il server HTTP incorporato (jetty), ma alcuni server diversi avviati all'inizio del test (ad esempio zookeeper) e l'applicazione sottoposta a test devono connettersi ad esso.

Qual è il modo migliore per raggiungere questo obiettivo?

(ecco una domanda simile, ma le risposte non menzionano una soluzione per le porte effimere - Override default Spring-Boot application.properties settings in Junit Test)

risposta

2

Si potrebbe sostituire il valore della proprietà di porta nella @BeforeClass come questo:

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

C'è un modo per rimuovere queste proprietà dopo i test? Questo in qualche modo inquina l'ambiente JVM. –

+0

Si potrebbe ripristinare la struttura tramite System.clearProperty (chiave) o tornare al suo valore precedente nella @AfterClass – user3408654

Problemi correlati