Een beknopte handleiding voor @TestPropertySource

1. Overzicht

Spring biedt veel functies om ons te helpen bij het testen van onze code. Soms moeten we bepaalde configuratie-eigenschappen gebruiken om het gewenste scenario in onze testgevallen op te zetten.

In deze situaties we kunnen gebruik maken van de @TestPropertySource annotatie. Met deze tool kunnen we configuratiebronnen definiëren die een hogere prioriteit hebben dan elke andere bron die in het project wordt gebruikt.

Daarom zullen we in deze korte tutorial voorbeelden zien waarin we deze annotatie gebruiken. We analyseren ook het standaardgedrag en de belangrijkste kenmerken die het ondersteunt.

Voor meer informatie over testen in Spring Boot, raden we je aan om onze tutorial ‘Testen in Spring Boot 'te bekijken.

2. Afhankelijkheden

De eenvoudigste manier om alle vereiste bibliotheken in ons project op te nemen, is door de extensie spring-boot-starter-test artefact in ons pom.xml het dossier:

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

We kunnen Maven Central controleren om te verifiëren dat we de nieuwste versie van de startersbibliotheek gebruiken.

3. Hoe te gebruiken @TestPropertySource

Laten we ons voorstellen dat we de waarde van een eigenschap gebruiken door deze te injecteren met de @Waarde Lente annotatie:

@Component openbare klasse ClassUsingProperty {@Value ("$ {baeldung.testpropertysource.one}") privé String propertyOne; openbare String retrievePropertyOne () {return propertyOne; }}

We gebruiken dan de @TestPropertySource annotatie op klasniveau om een ​​nieuwe configuratiebron te definiëren en de waarde van die eigenschap te overschrijven:

@RunWith (SpringRunner.class) @ContextConfiguration (classes = ClassUsingProperty.class) @TestPropertySource openbare klasse DefaultTest {@Autowired ClassUsingProperty classUsingProperty; @Test openbare ongeldig gegevenDefaultTPS_whenVariableRetrieved_thenDefaultFileReturned () {String output = classUsingProperty.retrievePropertyOne (); assertThat (output) .isEqualTo ("standaardwaarde"); }}

Wanneer we deze testannotatie gebruiken, zullen we doorgaans ook de @ContextConfiguration een om het ApplicationContext voor het scenario.

Standaard is het @TestPropertySource annotatie probeert een eigendommen bestand relatief ten opzichte van de klasse die de annotatie heeft gedeclareerd.

Als onze testklasse in dit geval bijvoorbeeld in de com.baeldung.testpropertysource pakket, dan hebben we het bestand nodig com / baeldung / testpropertysource / DefaultTest.properties in ons klassenpad.

Laten we het dan toevoegen aan onze bronnenmap:

# DefaultTest.properties baeldung.testpropertysource.one = standaardwaarde

Bovendien kunnen we de standaardlocatie van het configuratiebestand wijzigen of extra eigenschappen toevoegen die een nog hogere prioriteit hebben:

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

Ten slotte kunnen we specificeren of we willen erven locaties en eigendommen waarden uit superklassen of niet. Daarom kunnen we de inheritLocations en inheritProperties attributen, die zijn waar standaard.

4. Conclusie

Met dit eenvoudige voorbeeld hebben we geleerd hoe we de @TestPropertySource Lente annotatie effectief.

We kunnen voorbeelden vinden voor de verschillende scenario's in onze Github-repository.


$config[zx-auto] not found$config[zx-overlay] not found