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.