2017-02-01 26 views
4

Wir verwenden bootstrap.properties in einer Spring Boot-App, um mit Spring Cloud Config verbundene Eigenschaften zu konfigurieren.Spring Boot Test - Überschreiben bootstrap.properties

Wir möchten diese Eigenschaften während des Tests ignorieren, da wir keine Verbindung zum Config-Server für Komponententests herstellen möchten. So suchen wir nach einer Möglichkeit, Eigenschaften von Haupt bootstrap.properties vollständig rückgängig zu machen und eine neue zum Testen oder Überschreiben selektiver Eigenschaften bereitzustellen.

Wir versuchten mit der Erstellung src/test/resources/bootstrap.properties, src/test/resources/bootstrap-test.properties mit spring.cloud.config.enabled=false Eigenschaft, aber es hat nicht funktioniert.

versuchten wir, wie unten zu setzen, bevor die Testclass

static { 
    System.setProperty("spring.cloud.config.enabled", "false"); 
} 

und es funktionierte nicht starten.

Während Spring Boot-Dokumentation ziemlich gut ist, wie application.properties funktioniert, konnte ich nicht einmal einen Verweis auf bootstrap.properties finden.

Jede Hilfe ist sehr geschätzt auf eine zuverlässige Möglichkeit, bootstrap.properties während des Testens zu überschreiben. es nimmt tatsächlich die bootstrap-test.properties und kombiniert diese mit Haupt bootstrap.properties Datei

Antwort

3

(Beantwortung hier meine eigene Frage) gefunden

Nach viel Versuch und Irrtum, dass die Federprofil zu test indem.

In diesem Fall versucht spring.cloud.config.enabled=false Einstellung nach wie vor als im Haupt Bootstrap Bootstrap es spring.cloud.config.server.bootstrap = true so mussten wir diese Eigenschaft auf false gesetzt in bootstrap-test.properties zu inaktivem Cloud-Server vollständig eingestellt wurde.

Hoffe, das hilft jemandem.

+0

Does nicht arbeite für mich. Standardmäßig wird 'bootstrap-test.properties' ignoriert. Ich musste '@TestPropertySource (locations =" ​​classpath: bootstrap-test.properties ")' 'zu meiner' @ SpringBootTest' Klasse hinzufügen. Verwenden von Spring Boot Starter 1.5.3.RELEASE. – user909481

+0

Ich habe folgendes getan: * modifiziert * bauen.Gradle, um das Federprofil für Komponententest wie folgt angeben: 'test { \t SystemProperties System.properties \t systemProperties.put ("spring.profiles.active", "unittest") }' * erstellt * 'bootstrap- unittest.yml' und platzierte es in 'src/test/resources'. Es ist mit allen aktivierten 'spring.cloud'-Eigenschaften auf false konfiguriert. – toddcscar

+0

@ user909481 'bootstrap-test.properties' wird nur automatisch aufgerufen, wenn Ihr Test' @ActiveProfiles ('test') '' hat. Wenn Sie es für alle Tests deaktivieren müssen, finden Sie in meiner Antwort oben – Doug

4

Wenn Sie mit der @SpringBootTest Anmerkung Sie Eigenschaften im bootstrap.properties mit folgendem außer Kraft setzen können:

@SpringBootTest(properties = "spring.cloud.config.enabled=false") 

Ansonsten können Sie:

  1. hinzufügen @ActiveProfiles('test') auf Ihre Testklasse
  2. erstellen Eine Datei namens bootstrap-test.properties
  3. Fügen Sie die Eigenschaften hinzu, die Sie überschreiben möchten z.B. spring.cloud.config.enabled=false

Update: Wenn Sie Federwolke Config für alle Tests deaktivieren mögen, können Sie einfach ein bootstrap.properties in Ihrem test/resources Ordner mit folgenden Eigenschaft erstellen:

spring.cloud.config.enabled=false

Verwandte Themen