Kratki vodič za @DirtiesContext
1. Pregled
U ovom brzom vodiču naučit ćemo o @DirtiesContext bilješka. Pokazat ćemo i standardni način upotrebe napomene za testiranje.
2. @DirtiesContext
@DirtiesContext je Proljetna probna bilješka. Označava da povezani test ili klasa mijenja ApplicationContext. Kaže okviru za testiranje da zatvori i ponovno stvori kontekst za kasnije testove.
Možemo označiti test metodu ili čitav razred. Postavljanjem MethodMode ili ClassMode, možemo kontrolirati kada Spring označava kontekst za zatvaranje.
Ako smjestimo @DirtiesContext na klasi, napomena se odnosi na svaku metodu u klasi s danim ClassMode.
3. Testiranje bez raščišćavanja proljetnog konteksta
Recimo da imamo a Korisnik:
korisnik javne klase {String firstName; String lastName; }
Imamo i vrlo jednostavne Predmemorija korisnika:
@Component javna klasa UserCache {@Getter private Set userList = new HashSet (); javni logički addUser (korisnik niza) {return userList.add (korisnik); } public void printUserList (String message) {System.out.println (message + ":" + userList); }}
Izrađujemo test integracije za učitavanje i testiranje pune aplikacije:
@TestMethodOrder (OrderAnnotation.class) @ExtendWith (SpringExtension.class) @SpringBootTest (classes = SpringDataRestApplication.class) klasa DirtiesContextIntegrationTest {@Automobilski zaštićeni UserCache userCache; ...}
Prva metoda, addJaneDoeAndPrintCache, dodaje unos u predmemoriju:
@Test @Order (1) void addJaneDoeAndPrintCache () {userCache.addUser ("Jane Doe"); userCache.printUserList ("addJaneDoeAndPrintCache"); }
Nakon dodavanja korisnika u predmemoriju, on ispisuje sadržaj predmemorije:
addJaneDoeAndPrintCache: [Jane Doe]
Sljedeći, printCache ponovno ispisuje korisničku predmemoriju:
@Test @Order (2) void printCache () {userCache.printUserList ("printCache"); }
Sadrži ime dodano u prethodnom testu:
printCache: [Jane Doe]
Recimo da se kasniji test oslanjao na praznu predmemoriju za neke tvrdnje. Prethodno umetnuta imena mogu uzrokovati neželjeno ponašanje.
4. Korištenje @DirtiesContext
Sad ćemo pokazati @DirtiesContext sa zadanim MethodMode, NAKON_METODE. To znači da će Spring označiti kontekst za zatvaranje nakon završetka odgovarajuće ispitne metode.
Da bismo izdvojili promjene na testu, dodajemo @DirtiesContext. Pogledajmo kako to funkcionira.
The addJohnDoeAndPrintCache test metoda dodaje korisnika u predmemoriju. Također smo dodali @DirtiesContext napomena koja kaže da bi se kontekst trebao isključiti na kraju metode ispitivanja:
@DirtiesContext (methodMode = MethodMode.AFTER_METHOD) @Test @Order (3) void addJohnDoeAndPrintCache () {userCache.addUser ("John Doe"); userCache.printUserList ("addJohnDoeAndPrintCache"); }
Izlaz je sada:
addJohnDoeAndPrintCache: [John Doe, Jane Doe]
Konačno, printCacheAgain ponovno ispisuje predmemoriju:
@Test @Order (4) void printCacheAgain () {userCache.printUserList ("printCacheAgain"); }
Izvodeći cjelovitu klasu testa, između njih vidimo ponovno učitavanje konteksta Spring addJohnDoeAndPrintCache i printCacheAgain. Dakle, predmemorija se reinicijalizira, a izlaz je prazan:
printCacheAgain: []
5. Ostale podržane faze ispitivanja
Gornji primjer pokazuje nakon trenutne metode ispitivanja faza. Napravimo kratki sažetak faza:
5.1. Razina razreda
The ClassMode opcije za test klasu definiraju kada se kontekst resetira:
- BEFORE_CLASS: Prije trenutne klase testa
- BEFORE_EACH_TEST_METHOD: Prije svake metode ispitivanja u trenutnoj klasi ispitivanja
- AFTER_EACH_TEST_METHOD: Nakon svake ispitne metode u trenutnoj ispitnoj klasi
- NAKON NASTAVE: Nakon trenutne klase testa
5.2. Razina metode
The MethodMode opcije za pojedinu metodu definiraju kada se kontekst resetira:
- PRIJE_METOD: Prije trenutne metode ispitivanja
- NAKON_METODE: Nakon trenutne metode ispitivanja
6. Zaključak
U ovom smo članku predstavili @DirtiesContext bilješka za testiranje.
Kao i uvijek, primjer koda dostupan je na GitHub-u.