Útmutató a @RepeatedTesthez Junit 5-ben

1. Áttekintés

Ebben a gyors cikkben megnézzük a @RepeatedTest az JUnit 5-ben bevezetett kommentár. Ez egy hatékony módszert kínál számunkra minden olyan teszt megírásához, amelyet többször meg akarunk ismételni.

Ha többet szeretne megtudni a JUnit 5-ről, kérjük, olvassa el a JUnit 5 alapjait ismertető többi cikkünket.

2. Maven-függőségek és beállítás

Az első dolog, amit meg kell jegyezni, hogy a JUnit 5 futtatásához Java 8 szükséges. Ezt követően nézzük meg a Maven-függőséget:

 org.junit.jupiter junit-jupiter-motor 5.7.0 teszt 

Ez a fő JUnit 5 függőség, amelyet hozzá kell adnunk a tesztek megírásához. Itt tekintheti meg a műtárgy legújabb verzióját.

3. Egy egyszerű @RepeatedTest Példa

Ismételt teszt létrehozása egyszerű - csak adja hozzá a @RepeatedTest jelölés a vizsgálati módszer tetején:

@RepeatedTest (3) void repeatTest (TestInfo testInfo) {System.out.println ("Ismételt teszt végrehajtása"); assertEquals (2, Math.addExact (1, 1), "1 + 1 egyenlő legyen 2"); }

Vegye figyelembe, hogy a normál helyett @Teszt annotációt használunk @RepeatedTest egység tesztünkhöz. A fenti tesztet háromszor hajtják végre mintha ugyanazt a tesztet háromszor írták volna meg.

A tesztjelentések (a jelentésfájlok vagy az eredmények az IDE JUnit lapján) az összes végrehajtást megjelenítik:

3 ismétlés 1 (ismétlésTest (TestInfo)) 3 ismétlés (ismétlésTest (TestInfo)) 3 ismétlés / 3 (ismétlésTest (TestInfo))

4. Az életciklus támogatása @RepeatedTest

A @RepeatedTest szokásosként fog viselkedni @Teszt teljes JUnit teszt életciklus-támogatással. Ez azt jelenti, hogy minden végrehajtás során a @BeforeEach és @AfterEach módszereket fogjuk hívni. Ennek bemutatásához egyszerűen adja hozzá a megfelelő módszereket a tesztosztályhoz:

@BeforeEach void beforeEachTest () {System.out.println ("Minden teszt előtt"); } @AfterEach void afterEachTest () {System.out.println ("Minden teszt után"); System.out.println ("====================="); }

Ha lefuttatjuk az előző tesztünket, az eredmények megjelennek a konzolon:

Minden teszt előtt Ismételt teszt végrehajtása minden teszt után ======================= Minden teszt előtt Ismételt teszt végrehajtása minden teszt után =========== ========== Minden teszt előtt Ismételt teszt végrehajtása minden teszt után =====================

Mint láthatjuk, a @BeforeEach és @AfterEach metódusokat hívnak meg minden végrehajtás körül.

5. A tesztnév konfigurálása

Az első példában megfigyeltük, hogy a tesztjelentés kimenete nem tartalmaz azonosítókat. Ez tovább konfigurálható a név tulajdonság:

@RepeatedTest (érték = 3, név = RepeatedTest.LONG_DISPLAY_NAME) érvénytelen ismétlésTestWithLongName () {System.out.println ("Ismételt teszt végrehajtása hosszú névvel"); assertEquals (2, Math.addExact (1, 1), "1 + 1 egyenlő legyen 2"); }

A kimenet most tartalmazza a metódus nevét és az ismétlési indexet:

repeatTestWithLongName () :: 3/1-es ismétlés (repeatTestWithLongName ()) repeatTestWithLongName () :: 2-es ismétlés / 3 (repeatTestWithLongName ()) ismételtTestWithLongName () :: 3/3-os ismétlés (ismételtTestWithLongName ()

Egy másik lehetőség a használat RepeatedTest.SHORT_DISPLAY_NAME amely előállítja a teszt rövid nevét:

3 ismétlés 1 (ismétlésTestWithShortName ()) 2 ismétlés 3 (ismétlésTestWithShortName ()) ismétlés 3/3 (ismételtTesztWithShortName ())

Ha azonban testreszabott nevünket kell használnunk, akkor nagyon lehetséges:

@RepeatedTest (érték = 3, név = "Egyéni név {currentRepetition} / {totalRepetitions}") érvénytelen ismételtTesztWithCustomDisplayName (TestInfo testInfo) {assertEquals (2, Math.addExact (1, 1), "1 + 1 egyenlő legyen 2") ; }

A {currentRepetition} és {totalRepetitions} az aktuális ismétlés helyőrzői és az ismétlések teljes száma. Ezeket az értékeket a JUnit futás közben automatikusan megadja, és nincs szükség további konfigurálásra. A kimenet nagyjából olyan, amire számítottunk:

Egyéni név 1/3 (repeatTestWithCustomDisplayName ()) 2/3 egyéni név (repeatTestWithCustomDisplayName ()) Egyéni név 3/3 (repeatTestWithCustomDisplayName ())

6. Hozzáférés a RepetitionInfo

Eltekintve a név attribútum, a JUnit hozzáférést biztosít a tesztkódunkban található ismétlési metaadatokhoz is. Ezt úgy érhetjük el, hogy a RepetitionInfo paraméter a vizsgálati módszerünkhöz:

@RepeatedTest (3) void repeatTestWithRepetitionInfo (RepetitionInfo repetitionInfo) {System.out.println ("Ismétlés #" + repetitionInfo.getCurrentRepetition ()); assertEquals (3, repetitionInfo.getTotalRepetitions ()); }

A kimenet az egyes végrehajtások aktuális ismétlődési indexét tartalmazza:

1. ismétlés 2. ismétlés 3. ismétlés

A RepetitionInfo biztosítja RepetitionInfoParameterResolver és csak a @RepeatedTest.

7. Következtetés

Ebben a gyors bemutatóban feltártuk a @RepeatedTest a JUnit által nyújtott megjegyzés, és megtanulta a konfigurálás különböző módjait.

Ne felejtse el megnézni a cikk teljes forráskódját a GitHubon.