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.


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