Rövid útmutató a @DtiesContext webhelyhez
1. Áttekintés
Ebben a gyors bemutatóban megismerhetjük a @DtiesContext annotáció. Mutatunk egy szabványos módszert is arra, hogyan használhatjuk a jegyzetet a teszteléshez.
2. @DtiesContext
@DtiesContext egy Tavaszi tesztjegyzet. Jelzi, hogy a társított teszt vagy osztály módosítja a ApplicationContext. Azt mondja a tesztelési keretrendszernek, hogy zárja le és állítsa vissza a kontextust a későbbi tesztekhez.
Feljegyezhetünk egy vizsgálati módszert vagy egy egész osztályt. A MethodMode vagy ClassMode, ellenőrizhetjük, amikor Spring jelöli a lezárás kontextusát.
Ha elhelyezzük @DtiesContext egy osztályon az annotáció az osztály minden módszerére vonatkozik a megadottal ClassMode.
3. Tesztelés a tavaszi kontextus törlése nélkül
Tegyük fel, hogy van egy Felhasználó:
public class Felhasználó {String keresztnév; Karakterlánc vezetéknév; }
Van egy nagyon egyszerű dolgunk is Felhasználói gyorsítótár:
@Component public class UserCache {@Getter private Set userList = new HashSet (); public logikai addUser (String felhasználó) {return userList.add (felhasználó); } public void printUserList (karakterlánc üzenet) {System.out.println (üzenet + ":" + felhasználói lista); }}
Hozzon létre egy integrációs tesztet a teljes alkalmazás betöltéséhez és teszteléséhez:
@TestMethodOrder (OrderAnnotation.class) @ExtendWith (SpringExtension.class) @SpringBootTest (class = SpringDataRestApplication.class) osztály DirtiesContextIntegrationTest {@Autowired védett UserCache userCache; ...}
Az első módszer, addJaneDoeAndPrintCache, hozzáad egy bejegyzést a gyorsítótárhoz:
@Test @Order (1) void addJaneDoeAndPrintCache () {userCache.addUser ("Jane Doe"); userCache.printUserList ("addJaneDoeAndPrintCache"); }
Miután hozzáadott egy felhasználót a gyorsítótárhoz, kinyomtatja a gyorsítótár tartalmát:
addJaneDoeAndPrintCache: [Jane Doe]
Következő, printCache újra kinyomtatja a felhasználói gyorsítótárat:
@Test @Order (2) void printCache () {userCache.printUserList ("printCache"); }
Az előző tesztben hozzáadott nevet tartalmazza:
printCache: [Jane Doe]
Tegyük fel, hogy egy későbbi teszt néhány állításnál egy üres gyorsítótárra támaszkodott. A korábban beillesztett nevek nem kívánt viselkedést okozhatnak.
4. Használata @DtiesContext
Most megmutatjuk @DtiesContext alapértelmezettel MethodMode, AFTER_METHOD. Ez azt jelenti, hogy Spring a megfelelő vizsgálati módszer befejezése után megjelöli a lezárás kontextusát.
A teszt változásainak elkülönítéséhez hozzáadjuk @DtiesContext. Nézzük meg, hogyan működik.
A addJohnDoeAndPrintCache teszt módszer hozzáad egy felhasználót a gyorsítótárhoz. Hozzáadtuk a @DtiesContext annotáció, amely szerint a kontextusnak le kell állnia a vizsgálati módszer végén:
@DtiesContext (methodMode = MethodMode.AFTER_METHOD) @Test @Order (3) void addJohnDoeAndPrintCache () {userCache.addUser ("John Doe"); userCache.printUserList ("addJohnDoeAndPrintCache"); }
A kimenet most:
addJohnDoeAndPrintCache: [John Doe, Jane Doe]
Végül, printCacheAgain újra kinyomtatja a gyorsítótárat:
@Test @Order (4) void printCacheAgain () {userCache.printUserList ("printCacheAgain"); }
A teljes tesztosztály lefutása közben a tavaszi kontextus újratöltését látjuk addJohnDoeAndPrintCache és printCacheAgain. Tehát a gyorsítótár újraindul, és a kimenet üres:
printCacheAgain: []
5. Egyéb támogatott tesztfázisok
A fenti példa a a jelenlegi vizsgálati módszer után fázis. Készítsünk egy gyors összefoglalót a fázisokról:
5.1. Osztályszint
A ClassMode A tesztosztály beállításai meghatározzák a kontextus visszaállítását:
- ÓRA ELŐTT: A jelenlegi tesztóra előtt
- BEFORE_EACH_TEST_METHOD: Az egyes vizsgálati módszerek előtt az aktuális vizsgálati osztályban
- AFTER_EACH_TEST_METHOD: Az egyes vizsgálati módszerek után az aktuális tesztosztályban
- ÓRA UTÁN: Az aktuális tesztosztály után
5.2. Módszer szintje
A MethodMode Egy egyedi módszer opciói meghatározzák a kontextus visszaállítását:
- BEFORE_METHOD: A jelenlegi vizsgálati módszer előtt
- AFTER_METHOD: A jelenlegi vizsgálati módszer után
6. Következtetés
Ebben a cikkben bemutattuk a @DtiesContext tesztelés annotáció.
Mint mindig, a példa kód elérhető a GitHubon.