En rask guide til @DirtiesContext
1. Oversikt
I denne raske opplæringen lærer vi om @DirtiesContext kommentar. Vi viser også en standard måte å bruke merknaden på for å teste.
2. @DirtiesContext
@DirtiesContext er en Kommentar om vårprøving. Det indikerer at den tilhørende testen eller klassen endrer ApplicationContext. Den forteller testrammeverket for å lukke og gjenskape konteksten for senere tester.
Vi kan kommentere en testmetode eller en hel klasse. Ved å stille inn MethodMode eller ClassMode, vi kan kontrollere når våren markerer konteksten for nedleggelse.
Hvis vi plasserer @DirtiesContext på en klasse gjelder merknaden for hver metode i klassen med det gitte ClassMode.
3. Testing uten å fjerne vårkonteksten
La oss si at vi har en Bruker:
offentlig klasse bruker {String firstName; Strengens etternavn; }
Vi har også en veldig enkel UserCache:
@Component public class UserCache {@Getter private Set userList = new HashSet (); offentlig boolsk addUser (strengbruker) {return userList.add (bruker); } public void printUserList (String message) {System.out.println (message + ":" + userList); }}
Vi oppretter en integrasjonstest for å laste opp og teste hele applikasjonen:
@TestMethodOrder (OrderAnnotation.class) @ExtendWith (SpringExtension.class) @SpringBootTest (classes = SpringDataRestApplication.class) klasse DirtiesContextIntegrationTest {@Autowired beskyttet UserCache userCache; ...}
Den første metoden, addJaneDoeAndPrintCache, legger til en oppføring i hurtigbufferen:
@Test @Order (1) ugyldig addJaneDoeAndPrintCache () {userCache.addUser ("Jane Doe"); userCache.printUserList ("addJaneDoeAndPrintCache"); }
Etter å ha lagt til en bruker i hurtigbufferen, skriver den ut innholdet i hurtigbufferen:
addJaneDoeAndPrintCache: [Jane Doe]
Neste, printCache skriver ut brukerbufferen igjen:
@Test @Order (2) ugyldig printCache () {userCache.printUserList ("printCache"); }
Den inneholder navnet som ble lagt til i forrige test:
printCache: [Jane Doe]
La oss si at en senere test var avhengig av en tom cache for noen påstander. De tidligere innsatte navnene kan forårsake uønsket oppførsel.
4. Bruke @DirtiesContext
Nå skal vi vise @DirtiesContext med standardinnstillingen MethodMode, ETTER_METHOD. Dette betyr at våren vil markere konteksten for lukking etter at den tilsvarende testmetoden er fullført.
For å isolere endringer i en test, legger vi til @DirtiesContext. La oss se hvordan det fungerer.
De addJohnDoeAndPrintCache testmetoden legger til en bruker i hurtigbufferen. Vi har også lagt til @DirtiesContext kommentar, som sier at konteksten skal lukkes på slutten av testmetoden:
@DirtiesContext (methodMode = MethodMode.AFTER_METHOD) @Test @Order (3) ugyldig addJohnDoeAndPrintCache () {userCache.addUser ("John Doe"); userCache.printUserList ("addJohnDoeAndPrintCache"); }
Resultatet er nå:
addJohnDoeAndPrintCache: [John Doe, Jane Doe]
Endelig, printCacheAgain skriver ut hurtigbufferen igjen:
@Test @Order (4) ugyldig printCacheAgain () {userCache.printUserList ("printCacheAgain"); }
Når vi kjører hele testklassen, ser vi vårkonteksten lastes inn i mellom addJohnDoeAndPrintCache og printCacheAgain. Så hurtigbufferen starter på nytt, og utgangen er tom:
printCacheAgain: []
5. Andre støttede testfaser
Eksemplet ovenfor viser etter gjeldende testmetode fase. La oss gjøre et raskt sammendrag av fasene:
5.1. Klassenivå
De ClassMode alternativer for en testklasse definerer når konteksten tilbakestilles:
- FØR_KLASS: Før nåværende testklasse
- FØR_EACH_TEST_METHOD: Før hver testmetode i gjeldende testklasse
- AFTER_EACH_TEST_METHOD: Etter hver testmetode i gjeldende testklasse
- ETTER TIMEN: Etter dagens testklasse
5.2. Metodenivå
De MethodMode alternativer for en individuell metode definerer når konteksten tilbakestilles:
- FØR_METHOD: Før den nåværende testmetoden
- ETTER_METHOD: Etter gjeldende testmetode
6. Konklusjon
I denne artikkelen presenterte vi @DirtiesContext teste kommentar.
Som alltid er eksempelkoden tilgjengelig på GitHub.