En rask guide til @TestPropertySource

1. Oversikt

Våren har mange funksjoner som hjelper oss med å teste koden vår. Noen ganger må vi bruke bestemte konfigurasjonsegenskaper for å sette opp ønsket scenario i testtilfellene.

I disse situasjonene, vi kan bruke @TestPropertySource kommentar. Med dette verktøyet kan vi definere konfigurasjonskilder som har høyere prioritet enn noen annen kilde som brukes i prosjektet.

Derfor vil vi i denne korte opplæringen se eksempler på hvor vi bruker denne kommentaren. Vi analyserer også standardatferden og hovedattributtene den støtter.

For å lære mer om testing i Spring Boot, foreslår vi at du tar en titt på opplæringen vår om "Testing in Spring Boot".

2. Avhengigheter

Den enkleste måten å inkludere alle nødvendige biblioteker i prosjektet vårt er å legge til vår-støvel-start-test gjenstand i vår pom.xml fil:

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

Vi kan sjekke Maven Central for å bekrefte at vi bruker den nyeste versjonen av startbiblioteket.

3. Hvordan bruke @TestPropertySource

La oss forestille oss at vi bruker verdien av en eiendom ved å injisere den med @Verdi Vårkommentar:

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

Vi bruker deretter @TestPropertySource merknad på klassenivå for å definere en ny konfigurasjonskilde og overstyre verdien til den egenskapen:

@RunWith (SpringRunner.class) @ContextConfiguration (klasser = ClassUsingProperty.class) @TestPropertySource offentlig klasse DefaultTest {@Autowired ClassUsingProperty classUsingProperty; @Test public void givenDefaultTPS_whenVariableRetrieved_thenDefaultFileReturned () {Strengutgang = classUsingProperty.retrievePropertyOne (); assertThat (output) .isEqualTo ("standard-verdi"); }}

Når vi bruker denne testkommentaren, vil vi vanligvis også inkludere @ContextConfiguration en for å laste og konfigurere ApplicationContext for scenariet.

Som standard er @TestPropertySource kommentar prøver å laste inn en eiendommer fil i forhold til klassen som erklærte kommentaren.

I dette tilfellet, for eksempel hvis testklassen vår er i com.baeldung.testpropertysource pakken, så trenger vi filen no / baeldung / testpropertysource / DefaultTest.properties i klassestien vår.

La oss legge det til i ressursmappen vår da:

# DefaultTest.properties baeldung.testpropertysource.one = standardverdi

I tillegg kan vi endre standard konfigurasjonsfilplassering, eller legge til ekstra egenskaper som vil ha enda høyere prioritet:

@TestPropertySource (locations = "/other-location.properties", egenskaper = "baeldung.testpropertysource.one = annen-eiendoms-verdi")

Til slutt kan vi spesifisere om vi vil arve lokasjoner og eiendommer verdier fra superklasser eller ikke. Derfor kan vi veksle mellom inheritLocations og inheritProperties attributter, som er ekte som standard.

4. Konklusjon

Med dette enkle eksemplet har vi lært hvordan du bruker @TestPropertySource Vårkommentar effektivt.

Vi kan finne eksempler på de forskjellige scenariene i Github-depotet vårt.


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