Spring-boot-tests - nicht finden Können, test-Eigenschaften
Ich habe eine spring-boot-Projekt-und es funktioniert Super. Ich möchte nun tests schreiben, für meine Anwendung und ich habe mich in einige Konfigurationsprobleme.
Spring boot erstellt eine test-Klasse für mich genannt ApplicationTests. Es ist echt einfach und es sieht wie folgt aus:
@RunWith(SpringRunner.class)
@SpringBootTest
public class DuurzaamApplicationTests {
@Test
public void contextLoads() {
}
}
Wenn ich jetzt beginnen die tests, die ich bekomme diese Fehlermeldung:
java.lang.IllegalArgumentException: Could not resolve placeholder 'company.upload' in value "${company.upload}"
Ich habe einen Eigenschaften.yml-Datei im Verzeichnis src/test/resources-Verzeichnis und aus irgendeinem Grund nicht geladen wurde. Ich habe versucht, alle Arten von Anmerkungen von Beispielen im Internet, und noch keiner von Ihnen arbeiten.
Wie kann ich sagen, spring-boot-tests, um eine Anwendung verwenden.yml-Datei zu laden, die Eigenschaften aus?
- Mögliche Duplikate von Spring @PropertySource mit YAML
Du musst angemeldet sein, um einen Kommentar abzugeben.
wir können
@TestPropertySource
oder@PropertySource
zum laden der properties-DateiDocs: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/context/TestPropertySource.html
.yml
wird nicht unterstützt, nur.properties
und.xml
sind.Zu meiner überraschung, beim laden von properties-Dateien im Frühjahr Boot-Test
.yml
wird nicht unterstützt. Es wurde festgestellt, in der Dokumentation, obwohl implizit.Aus dem link oben:
https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/context/TestPropertySource.html
.yml
wird nicht erwähnt.Und, nach dem ändern meine
.yml
zu.properties
und schreiben Sie die Werte inxx.xx.xx=value
form, die Schlüssel-Werte-Paare können korrekt gelesen werden.So merkwürdig.
EDIT:
Find ich jetzt ein ticket, dieses Problem anzugehen; scheint ein lange bekanntes Problem im Frühjahr.
https://github.com/spring-projects/spring-framework/issues/18486
.yml
Sie können auch die folgenden tests:@SpringBootTest( properties = { "my.property=test" }
Beachten Sie, dass das format für die Eigenschaften hat, der einzige zu sein der.properties
- Dateien, d.h. mit=
als Trennzeichen. )`@PropertySource
und@TestPropertySource
tun nicht Arbeit mit YAML. Sehen diese.Habe ich auch getestet es mich. Versuchen Sie, erstellen 2-Dateien - *.yml und *.Eigenschaften und sehen Sie es selbst.
Machen
*.yml
arbeiten die meisten Menschen verwenden@SpringBootTest
, aber wenn es ist nicht, was Sie wollen, und Sie möchten, zu verwenden@ContextConfiguration
statt, Sie sind für ein wenig überraschung.Für mich die oben genannten Lösungen nicht funktioniert hat und alle Umgebungsvariablen wurden noch überschreiben Sie den test definierten Eigenschaften in @TestPropertySource obwohl https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html zeigt an, dass diese Quelle sollte in der Rangfolge höher steht als environment-Variablen. Die einzige Lösung, die für mich gearbeitet wurde manuell definieren
PropertyPlaceholderConfigurer
bean im test-Konfiguration-Klasse, und legen Sie es mit der höchsten Priorität.Dieser wurde mit Spring-Boot-1.5.15.RELEASE