So finden Sie den Port des Spring Boot-Containers, wenn Sie einen Spock-Test mit der Eigenschaft server.port = 0 ausführen

7

Gegeben dieser Eintrag in application.properties :

%Vor%

was bewirkt, dass Spring Boot einen zufällig verfügbaren Port auswählt und eine Springboot-Webanwendung mit Hilfe von spock testet, wie kann der Spock-Code wissen, welcher Port getroffen werden soll?

Normale Injektion wie folgt:

%Vor%

funktioniert nicht mit spock.

    
Bohemian 09.07.2014, 00:09
quelle

3 Antworten

10

Sie können den Port mit diesem Code finden:

%Vor%

Was für diejenigen, die am Java-Äquivalent interessiert sind, ist:

%Vor%

Hier ist eine abstrakte Klasse, die Sie erweitern können, die diese Initialisierung der Spring-Boot-Anwendung beendet und den Port bestimmt:

%Vor%

Was können Sie so verwenden:

%Vor%     
Bohemian 09.07.2014, 00:09
quelle
8

Die Injektion funktioniert mit Spock, solange Sie Ihre Klassenklasse korrekt konfiguriert haben und spock-spring im Klassenpfad haben. Es gibt eine Einschränkung in Spock Spring , die dazu führt, dass Ihre Boot-Anwendung nicht bootstraped wird, wenn Sie Verwende @SpringApplicationConfiguration . Sie müssen @ContextConfiguration verwenden und stattdessen manuell konfigurieren. Siehe diese Antwort für Details.

>

Der zweite Teil des Problems besteht darin, dass Sie keinen GString für @Value verwenden können. Sie könnten die $ umgehen, aber es ist einfacher, einfache Anführungszeichen zu verwenden:

%Vor%

Wenn Sie das zusammensetzen, erhalten Sie eine Spezifikation, die ungefähr so ​​aussieht:

%Vor%

Beachten Sie auch die Verwendung von @IntegrationTest("server.port=0") , um einen zufälligen Port anzufordern. Es ist eine gute Alternative, es in application.properties zu konfigurieren.

    
Andy Wilkinson 09.07.2014 08:48
quelle
0

Sie könnten das auch tun:

%Vor%     
Camilo 07.02.2018 03:43
quelle

Tags und Links