Eine Kurzanleitung zu @TestPropertySource

1. Übersicht

Spring bietet viele Funktionen, die uns beim Testen unseres Codes helfen. Manchmal müssen wir bestimmte Konfigurationseigenschaften verwenden, um das gewünschte Szenario in unseren Testfällen einzurichten.

In diesen Situationen können wir die Annotation @TestPropertySource verwenden . Mit diesem Tool können wir Konfigurationsquellen definieren, die eine höhere Priorität haben als jede andere im Projekt verwendete Quelle.

Daher sehen wir in diesem kurzen Tutorial Beispiele, in denen wir diese Anmerkung verwenden. Außerdem analysieren wir das Standardverhalten und die wichtigsten unterstützten Attribute.

Um mehr über das Testen in Spring Boot zu erfahren, empfehlen wir Ihnen, unser Tutorial "Testen in Spring Boot" zu lesen.

2. Abhängigkeiten

Der einfachste Weg, alle erforderlichen Bibliotheken in unser Projekt aufzunehmen, besteht darin, das Spring-Boot-Starter-Test- Artefakt in unsere Datei pom.xml einzufügen :

 org.springframework.boot spring-boot-starter-test test 2.0.5.RELEASE 

Wir können Maven Central überprüfen, um sicherzustellen, dass wir die neueste Version der Starterbibliothek verwenden.

3. Verwendung von @TestPropertySource

Stellen wir uns vor, wir verwenden den Wert einer Eigenschaft, indem wir ihn mit der Annotation @Value Spring einfügen :

@Component public class ClassUsingProperty { @Value("${baeldung.testpropertysource.one}") private String propertyOne; public String retrievePropertyOne() { return propertyOne; } }

Anschließend verwenden wir die Annotation auf Klassenebene @TestPropertySource , um eine neue Konfigurationsquelle zu definieren und den Wert dieser Eigenschaft zu überschreiben:

@RunWith(SpringRunner.class) @ContextConfiguration(classes = ClassUsingProperty.class) @TestPropertySource public class DefaultTest { @Autowired ClassUsingProperty classUsingProperty; @Test public void givenDefaultTPS_whenVariableRetrieved_thenDefaultFileReturned() { String output = classUsingProperty.retrievePropertyOne(); assertThat(output).isEqualTo("default-value"); } }

Wenn wir diese Testanmerkung verwenden, fügen wir normalerweise auch die @ContextConfiguration hinzu , um den ApplicationContext für das Szenario zu laden und zu konfigurieren .

Standardmäßig versucht die Annotation @TestPropertySource , eine Eigenschaftendatei relativ zu der Klasse zu laden , die die Annotation deklariert hat.

In diesem Fall benötigen wir beispielsweise die Datei com / baeldung / testpropertysource / DefaultTest.properties in unserem Klassenpfad , wenn sich unsere Testklasse im Paket com.baeldung.testpropertysource befindet .

Fügen wir es dann unserem Ressourcenordner hinzu:

# DefaultTest.properties baeldung.testpropertysource.one=default-value

Darüber hinaus können wir den Standardspeicherort der Konfigurationsdatei ändern oder zusätzliche Eigenschaften hinzufügen, die eine noch höhere Priorität haben:

@TestPropertySource(locations = "/other-location.properties", properties = "baeldung.testpropertysource.one=other-property-value")

Schließlich können wir angeben, ob wir Standorte und Eigenschaftswerte von Oberklassen erben möchten oder nicht. Daher können wir die ein- inheritLocations und inheritProperties Attribute, die sind wahr standardmäßig.

4. Fazit

In diesem einfachen Beispiel haben wir gelernt, wie die Annotation @TestPropertySource Spring effektiv verwendet wird.

Beispiele für die verschiedenen Szenarien finden Sie in unserem Github-Repository.