Stručný sprievodca k @DirtiesContext
1. Prehľad
V tomto rýchlom výučbe sa dozvieme viac o @DirtiesContext anotácia. Ukážeme tiež štandardný spôsob použitia anotácie na testovanie.
2. @DirtiesContext
@DirtiesContext je a Anotácia jarného testovania. Označuje, že priradený test alebo trieda upravuje ApplicationContext. Hovorí testovaciemu rámci, aby uzavrel a znovu vytvoril kontext pre neskoršie testy.
Môžeme anotovať testovaciu metódu alebo celú triedu. Nastavením MethodMode alebo ClassMode, môžeme kontrolovať, kedy Spring označuje kontext na uzavretie.
Ak umiestnime @DirtiesContext na hodine sa anotácia týka každej metódy v triede s daným ClassMode.
3. Testovanie bez vyčistenia kontextu pružiny
Povedzme, že máme Používateľ:
verejná trieda Používateľ {String firstName; Reťazec priezvisko; }
Máme tiež veľmi jednoduché UserCache:
@ Komponenta verejná trieda UserCache {@Získajte súkromné Nastaviť zoznam používateľov = nová HashSet (); public boolean addUser (String user) {return userList.add (user); } public void printUserList (reťazcová správa) {System.out.println (správa + ":" + userList); }}
Vytvoríme integračný test na načítanie a otestovanie celej aplikácie:
@TestMethodOrder (OrderAnnotation.class) @ExtendWith (SpringExtension.class) @SpringBootTest (classes = SpringDataRestApplication.class) trieda DirtiesContextIntegrationTest {@Autowired chránená UserCache userCache; ...}
Prvá metóda, addJaneDoeAndPrintCache, pridá záznam do cache:
@Test @Order (1) void addJaneDoeAndPrintCache () {userCache.addUser ("Jane Doe"); userCache.printUserList ("addJaneDoeAndPrintCache"); }
Po pridaní používateľa do medzipamäte vytlačí obsah medzipamäte:
addJaneDoeAndPrintCache: [Jane Doe]
Ďalšie, printCache znova vypíše vyrovnávaciu pamäť používateľa:
@Test @Order (2) void printCache () {userCache.printUserList ("printCache"); }
Obsahuje názov pridaný v predchádzajúcom teste:
printCache: [Jane Doe]
Povedzme, že neskorší test sa pri niektorých tvrdeniach opieral o prázdnu vyrovnávaciu pamäť. Predtým vložené názvy môžu spôsobiť nežiaduce správanie.
4. Používanie @DirtiesContext
Teraz sa ukážeme @DirtiesContext s predvoleným nastavením MethodMode, AFTER_METHOD. To znamená, že jar označí kontext na uzavretie po dokončení príslušnej testovacej metódy.
Aby sme izolovali zmeny v teste, pridávame @DirtiesContext. Pozrime sa, ako to funguje.
The addJohnDoeAndPrintCache testovacia metóda pridá používateľa do medzipamäte. Pridali sme tiež @DirtiesContext anotácia, ktorá hovorí, že kontext by sa mal na konci testovacej metódy vypnúť:
@DirtiesContext (methodMode = MethodMode.AFTER_METHOD) @Test @Order (3) void addJohnDoeAndPrintCache () {userCache.addUser ("John Doe"); userCache.printUserList ("addJohnDoeAndPrintCache"); }
Výstup je teraz:
addJohnDoeAndPrintCache: [John Doe, Jane Doe]
Nakoniec printCacheAgain znova vypíše vyrovnávaciu pamäť:
@Test @Order (4) void printCacheAgain () {userCache.printUserList ("printCacheAgain"); }
Po spustení celej testovacej triedy vidíme medzi tým opätovné načítanie jarného kontextu addJohnDoeAndPrintCache a printCacheAgain. Vyrovnávacia pamäť sa teda znova inicializuje a výstup je prázdny:
printCacheAgain: []
5. Ďalšie podporované testovacie fázy
Vyššie uvedený príklad ukazuje po súčasnej skúšobnej metóde fáza. Poďme si rýchlo zhrnúť fázy:
5.1. Úroveň triedy
The ClassMode možnosti pre testovaciu triedu definujú, kedy sa kontext vynuluje:
- BEFORE_CLASS: Pred súčasnou skúšobnou triedou
- BEFORE_EACH_TEST_METHOD: Pred každou skúšobnou metódou v súčasnej skúšobnej triede
- AFTER_EACH_TEST_METHOD: Po každej testovacej metóde v aktuálnej testovacej triede
- PO HODINE: Po aktuálnej testovacej triede
5.2. Úroveň metódy
The MethodMode možnosti pre individuálnu metódu definujú, kedy sa kontext vynuluje:
- BEFORE_METHOD: Pred súčasnou skúšobnou metódou
- AFTER_METHOD: Po súčasnej skúšobnej metóde
6. Záver
V tomto článku sme predstavili @DirtiesContext testovacia anotácia.
Vzorový kód je ako vždy k dispozícii na GitHub.