En hurtig guide til @TestPropertySource

1. Oversigt

Foråret bringer mange funktioner til at hjælpe os med at teste vores kode. Nogle gange er vi nødt til at bruge bestemte konfigurationsegenskaber for at indstille det ønskede scenarie i vores testsager.

I disse situationer vi kan gøre brug af @TestPropertySource kommentar. Med dette værktøj kan vi definere konfigurationskilder, der har højere prioritet end nogen anden kilde, der bruges i projektet.

Derfor vil vi i denne korte vejledning se eksempler, hvor vi bruger denne kommentar. Vi analyserer også dens standardadfærd og de vigtigste attributter, den understøtter.

For at lære mere om test i Spring Boot, foreslår vi at se på vores vejledning til "Testing in Spring Boot".

2. Afhængigheder

Den nemmeste måde at inkludere alle de nødvendige biblioteker i vores projekt er ved at tilføje spring-boot-starter-test artefakt i vores pom.xml fil:

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

Vi kan tjekke Maven Central for at bekræfte, at vi bruger den nyeste version af startbiblioteket.

3. Sådan bruges @TestPropertySource

Lad os forestille os, at vi bruger værdien af ​​en ejendom ved at injicere den ved hjælp af @Værdi Forårsnotering:

@Komponent offentlig klasse ClassUsingProperty {@Value ("$ {baeldung.testpropertysource.one}") privat streng propertyOne; public String retrievePropertyOne () {return propertyOne; }}

Vi bruger derefter @TestPropertySource anmærkning på klasseniveau for at definere en ny konfigurationskilde og tilsidesætte værdien af ​​den egenskab:

@RunWith (SpringRunner.class) @ContextConfiguration (klasser = ClassUsingProperty.class) @TestPropertySource offentlig klasse DefaultTest {@Autowired ClassUsingProperty classUsingProperty; @Test offentlig ugyldighed givenDefaultTPS_whenVariableRetrieved_thenDefaultFileReturned () {String output = classUsingProperty.retrievePropertyOne (); assertThat (output) .isEqualTo ("standard-værdi"); }}

Når vi bruger denne testkommentar, inkluderer vi typisk også @ContextConfiguration en for at indlæse og konfigurere ApplicationContext til scenariet.

Som standard er @TestPropertySource kommentar forsøger at indlæse en ejendomme fil i forhold til klassen, der erklærede kommentaren.

I dette tilfælde, for eksempel hvis vores testklasse er i com.baeldung.testpropertysource pakke, så har vi brug for filen com / baeldung / testpropertysource / DefaultTest.properties i vores klassesti.

Lad os tilføje det til vores ressourcemappe derefter:

# DefaultTest.properties baeldung.testpropertysource.one = standardværdi

Derudover kan vi ændre standardkonfigurationsfilplaceringen eller tilføje ekstra egenskaber, der har endnu højere prioritet:

@TestPropertySource (placeringer = "/other-location.properties", egenskaber = "baeldung.testpropertysource.one = anden-ejendom-værdi")

Endelig kan vi specificere, om vi vil arve placeringer og ejendomme værdier fra superklasser eller ej. Derfor kan vi skifte mellem inheritLocations og inheritProperties attributter, som er rigtigt som standard.

4. Konklusion

Med dette enkle eksempel har vi lært, hvordan man bruger @TestPropertySource Forårsnotering effektivt.

Vi kan finde eksempler på de forskellige scenarier i vores Github-arkiv.