Sprievodca po @RepeatedTest v Junite 5

1. Prehľad

V tomto rýchlom článku sa pozrieme na @RepeatedTest anotácia uvedená v JUnit 5. Poskytuje nám efektívny spôsob písania ľubovoľných testov, ktoré chceme opakovať niekoľkokrát.

Ak sa chcete dozvedieť viac informácií o JUnit 5, prečítajte si naše ďalšie články vysvetľujúce základné informácie a sprievodcu JUnit 5.

2. Závislosti a nastavenie Maven

Prvá vec, ktorú si treba uvedomiť, je, že JUnit 5 potrebuje na spustenie Javu 8. Po tomto, poďme sa pozrieť na závislosť Maven:

 org.junit.jupiter test junit-jupiter-engine 5.7.0 

Toto je hlavná závislosť JUnit 5, ktorú musíme pridať pri písaní našich testov. Najnovšiu verziu artefaktu nájdete tu.

3. Jednoduché @RepeatedTest Príklad

Vytvorenie opakovaného testu je jednoduché - stačí pridať @RepeatedTest anotácia navrchu skúšobnej metódy:

@RepeatedTest (3) void repeatTest (TestInfo testInfo) {System.out.println ("Vykonanie opakovaného testu"); assertEquals (2, Math.addExact (1, 1), "1 + 1 by sa mal rovnať 2"); }

Všimnite si, že namiesto štandardu @Test anotáciu, ktorú používame @RepeatedTest pre náš test jednotky. Vyššie uvedený test sa vykoná trikrát akoby ten istý test bol napísaný trikrát.

V protokole o teste (súbory protokolu alebo výsledky na karte JUnit vášho IDE) sa zobrazia všetky vykonania:

opakovanie 1 z 3 (opakovaný test (TestInfo)) opakovanie 2 z 3 (opakovaný test (TestInfo)) opakovanie 3 z 3 (opakovaný test (TestInfo))

4. Podpora životného cyklu pre @RepeatedTest

Každá poprava @RepeatedTest bude sa správať ako štamgast @Test s plnou podporou životného cyklu testu JUnit. To znamená, že počas každej popravy @BeforeEach a @AfterEach metódy sa budú volať. Na preukázanie toho stačí pridať príslušné metódy do testovacej triedy:

@BeforeEach void beforeEachTest () {System.out.println ("Pred každým testom"); } @AfterEach void afterEachTest () {System.out.println ("Po každom teste"); System.out.println ("====================="); }

Ak spustíme náš predchádzajúci test, výsledky sa zobrazia na konzole:

Pred každým testom Vykonanie opakovaného testu Po každom teste ===================== Pred každým testom Vykonanie opakovaného testu po každom teste ============ ========== Pred každým testom Vykonanie opakovaného testu po každom teste ======================

Ako vidíme, @BeforeEach a @AfterEach okolo každej exekúcie sa volajú metódy.

5. Konfigurácia názvu testu

V prvom príklade sme pozorovali, že výstup správy o teste neobsahuje žiadne identifikátory. Toto je možné ďalej konfigurovať pomocou názov atribút:

@RepeatedTest (value = 3, name = RepeatedTest.LONG_DISPLAY_NAME) void repeatTestWithLongName () {System.out.println ("Vykonanie opakovaného testu s dlhým menom"); assertEquals (2, Math.addExact (1, 1), "1 + 1 by sa mal rovnať 2"); }

Výstup bude teraz obsahovať názov metódy spolu s indexom opakovania:

repeatTestWithLongName () :: opakovanie 1 z 3 (opakovanéTestWithLongName ()) opakovanéTestWithLongName () :: opakovanie 2 z 3 (opakovanéTestWithLongName ()) opakovanéTestWithLongName () :: opakovanie 3 z 3 (opakovanéTestWithLongName ())

Ďalšou možnosťou je použitie Opakovaný test.SHORT_DISPLAY_NAME ktorý vytvorí krátky názov testu:

opakovanie 1 z 3 (opakovanéTestWithShortName ()) opakovanie 2 z 3 (opakovanéTestWithShortName ()) opakovanie 3 z 3 (opakovanéTestWithShortName ())

Ak však potrebujeme použiť náš prispôsobený názov, je to veľmi možné:

@RepeatedTest (value = 3, name = "Vlastný názov {currentRepetition} / {totalRepetitions}") void ; }

The {currentRepetition} a {totalRepetitions} sú zástupné symboly pre aktuálne opakovanie a celkový počet opakovaní. Tieto hodnoty poskytuje JUnit automaticky za behu a nevyžaduje sa žiadna ďalšia konfigurácia. Výstup je do značnej miery taký, aký sme očakávali:

Vlastný názov 1/3 (opakovanéTestWithCustomDisplayName ()) Vlastné meno 2/3 (opakovanéTestWithCustomDisplayName ()) Vlastné meno 3/3 (opakovanéTestWithCustomDisplayName ())

6. Prístup k RepetitionInfo

Okrem názov atribút JUnit poskytuje prístup k metaúdajom opakovania aj v našom testovacom kóde. To sa dosiahne pridaním a RepetitionInfo parameter našej testovacej metódy:

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

Výstup bude obsahovať aktuálny index opakovania pre každé spustenie:

Opakovanie č. 1 Opakovanie č. 2 Opakovanie č. 3

The RepetitionInfo poskytuje RepetitionInfoParameterResolver a je k dispozícii iba v kontexte @RepeatedTest.

7. Záver

V tomto rýchlom výučbe sme preskúmali @RepeatedTest anotáciu poskytnutú JUnitom a naučila sa rôzne spôsoby jej konfigurácie.

Nezabudnite si pozrieť celý zdrojový kód tohto článku na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found