Ú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.