list junit annotations
Tento výukový program vysvetľuje všetko o anotáciách JUnit spolu s porovnaním anotácií v JUnit 4 vs JUnit 5:
V našom predchádzajúcom tutoriáli sme sa naučili rôzne spôsoby vykonávania testovacích prípadov JUnit a zistili sme, ako vytvoriť a spustiť testovaciu sadu.
V tomto tutoriále spoznáme prominentný aspekt JUnit, ktorý sa volá Anotácie. Počnúc JUnit 4 sú anotácie zavedené a JUnit je veľmi jednoduchý, prínosnejší a jeho použitie je oveľa užívateľsky príjemnejšie.
Anotácie je Java API, ktoré umožňuje JVM rozpoznať typ metódy definovanej v testovacej triede. Často sa používajú „anotácie životných cyklov spätného volania“.
=> Navštívte tu a naučte sa JUnit od nuly.
Čo sa dozviete:
Anotácie JUnit - JUnit 4 proti JUnit 5
Vykonanie testu prechádza rôznymi fázami životného cyklu, ako je uvedené nižšie:
- Pred začatím testu je potrebné vykonať určité činnosti pri začatí hodiny.
- Niektoré ďalšie činnosti, ktoré sa majú vykonať pred začatím vykonávania testovacej skrinky.
- Určité činnosti, ktoré je potrebné vykonať po vykonaní skúšky a
- Niektoré činnosti na konci vykonania všetkých testov v triede.
Na zabezpečenie toho, aby sa tieto činnosti vykonávali počas každej etapy životného cyklu Java, musia existovať určité používateľom definované metódy alebo funkcie, ktoré sa nazývajú „ metódy spätného volania počas celého životného cyklu .
Správanie sa týchto metódy spätného volania počas celého životného cyklu je určený zabudovaným „ anotácie spätného volania počas celého životného cyklu „ použité v JUnit.
Príklad: Skúsme to ešte zjednodušiť tak, že tieto metódy a anotácie životného cyklu odvoláme na príklad testovanie automatu na kávu.
- Metóda stroj pripravený (), ktorá pred zapnutím prístroja skontroluje, či je k dispozícii voda, mlieko a kávové zrná.
- Iná metóda startMachine (), ktorá zapína zariadenie, umiestni do zariadenia pravdepodobne nový čerstvý papierový pohár.
- Testovacia skrinka, ktorá kontroluje „ Horúca voda () “.
- Ďalšia testovacia skrinka, ktorá kontroluje „ Cappuccino () “.
- Ďalšia testovacia skrinka, ktorá kontroluje „ ExpressoCoffee () “.
- Ďalšia metóda “ throwCup () “, Ktorá hodí použité poháre do koša.
- Metóda na úrovni triedy “ throwTrashandSwitchOff () “Odhodí preplnenú odpadovú kvapalinu z podnosu do umývadla a vypne stroj.
Vo vyššie uvedenom príklade teda nasleduje životný cyklus testu:
- startMachine () sa spustí pred každou testovacou tabuľkou - Horúca voda (), Cappuccino () a ExpressoCoffee () beží.
- Každý z týchto testovacích kufríkov tiež dodržiava danú metódu throwCup ().
- Metódy stroj pripravený () a throwTrashandSwitchOff () sú metódy na úrovni triedy, ktoré pre triedu fungujú iba raz. Metóda stroj pripravený () sa spustí raz, zatiaľ čo trieda iniciuje vykonávanie. Metóda throwTrashandSwitchOff () sa spustí raz po dokončení všetkých testovacích prípadov.
Teraz vyvstáva otázka, že ide iba o obyčajné metódy Java, potom:
nástroj na skenovanie a opravu počítačov v systéme Windows 10
- Ako budeme trvať na tom, aby fungoval JVM stroj pripravený () iba raz na úrovni triedy a throwTrashandSwitchOff () na konci výkonu triedy?
- Ako to dáme vedieť JVM startMachine () a throwCup () je potrebné spustiť pred spustením každej testovacej skrinky a po dokončení každého vykonania testovacej skrinky?
- Ako môžeme dosiahnuť, aby JVM identifikoval tieto metódy Horúca voda (), Cappuccino () a ExpressoCoffee () majú sa spustiť testovacie prípady?
Odpoveď: Jedinou odpoveďou na vyššie uvedené otázky je, že anotácie spätného volania počas životného cyklu robia všetko potrebné kúzlo.
(Zatiaľ predpokladajme, že túto triedu vytvárame v JUnit 4)
Anotácie životného cyklu - @BeforeClass, @AfterClass, @Before, @After, a @Test sú skutočné odpovede na vyššie uvedené tri otázky. Sme si celkom istí, že po prečítaní nasledujúcich ukazovateľov sa dozviete viac s anotáciami spätného volania životného cyklu a jeho pracovným tokom.
- Anotujte metódu stroj pripravený () s @BeforeClass a JVM to rozbehne raz počas začiatku hodiny.
- Anotujte metódu throwTrash () s @Po hodine a JVM to rozbehne raz na konci hodiny.
- Anotujte metódu startMachine () s @ Predtým a JVM ho spustí pred spustením každej testovacej skrinky.
- Anotujte metódu throwCup () s @ Potom a JVM ho spustí po vykonaní každého testovacieho prípadu.
- Anotujte každú z týchto metód Horúca voda (), Cappuccino () a ExpressoCoffee () s @Test a JVM vie, že toto sú základné testovacie prípady pre triedu JUnit, ktoré sa majú vykonať.
Poďme sa rýchlo pozrieť na JUnit životného cyklu spätného volania anotácií pre JUnit 4 vs JUnit 5
JUNIT 4 ANOTÁCIA | JUNIT 5 - ANOTÁCIA | |
---|---|---|
@RepeatedTest | 1. JUnit 5 podporuje opakované vykonávanie testovacej metódy viackrát pomocou anotácie @RepeatedTest | |
@ Predtým | @ Predtým každý | |
@ Potom | @AfterEach | |
@BeforeClass | @BeforeAll | |
@Po hodine | @Po všetkom | |
@Test | @Test |
Postupný pracovný postup poznámok k životnému cyklu
Nižšie je uvedený postupný pracovný postup anotácií životného cyklu pre JUnit 4:
- Metóda anotovaná pomocou @BeforeClass sa vykoná raz na začiatku triedy.
- Metóda anotovaná pomocou @Before sa vykoná pred začiatkom Testcase 1.
- Metóda Testcase1 anotovaná s @Test je testovacím prípadom v triede.
- Metóda s poznámkou @After sa spustí po dokončení prípadu Testcase 1.
- Metóda anotovaná pomocou @Before sa vykoná pred začiatkom Testcase 2.
- Metóda Testcase2 anotovaná s @Test je testovacím prípadom v triede.
- Metóda anotovaná pomocou @After sa spustí po dokončení prípadu Testcase 2.
- Metóda anotovaná pomocou @AfterClass sa vykoná raz na konci triedy po vykonaní testcase 1 aj 2.
Postupný pracovný tok anotácií životného cyklu pre JUnit 5 je nasledovný:
- Metóda anotovaná pomocou @BeforeAll sa vykoná raz na začiatku triedy.
- Metóda anotovaná pomocou @BeforeEach sa vykoná pred začiatkom Testcase 1.
- Metóda Testcase1 anotovaná s @Test je testovacím prípadom v triede.
- Metóda anotovaná pomocou @AfterEach beží po dokončení prípadu Testcase 1.
- Metóda anotovaná pomocou @BeforeEach sa vykoná pred začiatkom Testcase 2.
- Metóda Testcase2 anotovaná s @Test je testovacím prípadom v triede.
- Metóda anotovaná pomocou @AfterEach beží po dokončení prípadu Testcase 2.
- Metóda anotovaná pomocou @AfterAll sa vykoná raz na konci triedy po vykonaní testcase 1 aj 2.
Vypracovanie každej anotácie
V tejto časti sa poďme hlboko ponoriť a podrobne porozumieť tomu, čo každý z životných cyklov volá anotácia:
@ Pred (JUnit 4) / @ BeforeEach (JUnit 5):
- Anotovaná metóda sa vykoná pred vykonaním každej testovacej metódy v testovacej triede.
- Túto anotáciu je možné použiť, ak chcete mať zdroje alebo údaje o teste nastavené tesne pred začiatkom každého testu.
- Napríklad, ak je v testovacej triede JUnit 5 testovacích puzdier, potom sa metóda s poznámkami @ Before / @ BeforeEach vykoná 5krát pred vykonaním každého z testovacích prípadov.
@ After (JUnit 4) / @ AfterEach (JUnit 5):
- Anotovaná metóda sa vykoná po vykonaní každej testovacej metódy v testovacej triede.
- Túto anotáciu je možné použiť, ak chcete po každom spustení testovacieho prípadu uvoľniť použité zdroje alebo údaje z testu.
- Napríklad, ak je v testovacej triede JUnit 5 testovacích puzdier, potom sa metóda anotovaná pomocou @ After / @ AfterEach vykoná 5 krát po vykonaní testovacích prípadov.
@BeforeClass (JUnit 4) / @ BeforeAll (JUnit 5):
- Anotovaná metóda sa vykoná pred vykonaním všetkých testovacích metód v testovacej triede.
- Túto anotáciu je možné použiť, ak chcete nastaviť zdroje alebo otestovať údaje na úrovni triedy.
- Pretože táto metóda je anotovaná pomocou @ BeforeClass / @ BeforeAll sa pre testovaciu triedu vykoná iba raz a kópia metódy sa bude zdieľať v celej triede a musí sa uviesť metóda statický.
- Napríklad, ak je v testovacej triede JUnit 5 testovacích puzdier, potom sa metóda anotovaná výrazom @ BeforeClass / @ BeforeAll vykoná raz za testovaciu triedu predtým, ako sa spustí akýkoľvek testovací prípad.
@AfterClass (JUnit 4) / @ AfterAll (JUnit 5):
- Anotovaná metóda sa vykoná po vykonaní všetkých testovacích metód v testovacej triede.
- Túto anotáciu je možné použiť, ak chcete uvoľniť použité prostriedky alebo otestovať údaje na úrovni triedy.
- Pretože táto metóda je anotovaná pomocou @ AfterClass / @ AfterAll je vykonaná iba raz pre testovaciu triedu a kópia metódy je zdieľaná v celej triede, musí byť uvedená metóda statický.
- Napríklad, ak je v testovacej triede JUnit 5 testovacích puzdier, potom sa metóda anotovaná pomocou @ AfterClass / @ AfterAll vykoná raz za každú testovaciu triedu po dokončení všetkých testovacích prípadov.
@ Test (JUnit 4 a JUnit 5):
- Anotácia @Test je spoločná pre JUnit 4 aj JUnit 5. Anotované metódy predstavujú testovacie prípady v triede.
- V triede JUnit môže byť niekoľko metód, z ktorých každá je anotovaná pomocou @Test. To znamená, že trieda môže mať viac testovacích prípadov.
- Na otestovanie existujú rôzne atribúty alebo parametre, ktoré by mohli byť odovzdané. Môžete pridať vynútený časový limit pre testovací prípad alebo pridať výnimku. Tomu sa podrobne budeme venovať v samostatnom návode.
- Anotovaná metóda nemôže byť súkromná alebo statická a nemôže vrátiť žiadnu hodnotu.
- Metóda @Test musí byť v JUnit 4 deklarovaná ako verejná, zatiaľ čo Junit 5 umožňuje testovací prípad definovaný bez modifikátora prístupu „public“, pretože štandardne považuje „no modifikátor prístupu“ za „public“.
Základný príklad testu JUNIT
Základné JUNIT 4 príklad anotácií @BeforeClass, @Before, @Test, @After a @AfterClass bol uvedený v kóde spolu s vysvetlením v našom staršom návode Testovacie prípravky.
Pozrime sa na základné JUnit 5 Program na demonštráciu fungovania anotácií spätného volania životného cyklu @BeforeAll, @BeforeEach, @Test, @AfterEach a @AfterAll.
Kód pre JUnit5Program.java:
public class JUnit5Program { @BeforeAll public static void preClass() { System.out.println('@BeforeAll – the annotated method runs once before all other methods execute'); } @BeforeEach public void setUp() { System.out.println('_______________________________________________________
'); System.out.println('@BeforeEach – the annotated method executes before each test '); } @Test public void test_JUnit1() { System.out.println('@Test – this is test case 1'); } @Test public void test_JUnit2() { System.out.println('@Test – this is test case 2'); } @Test public void test_JUnit3() { System.out.println('@Test – this is test case 3'); } @AfterEach public void tearDown() { System.out.println('@AfterEach – the annotated method executes after each test executes'); System.out.println('_______________________________________________________
'); } @AfterAll public static void postClass() { System.out.println('@AfterAll – the annotated method runs once after all other methods execute'); } }
Po vykonaní súboru triedy sa v okne konzoly zobrazí nasledujúci výsledok.
Ďalšie poznámky - JUnit 4 proti JUnit 5
Existuje mnoho ďalších poznámok, ktoré sa používajú na konkrétne účely. Uvidíme zoznam anotácií pre JUnit 4 vs JUnit 5 a v krátkosti uvedený účel.
O každej z týchto anotácií bude v našich pripravovaných návodoch podrobný návod.
JUNIT 4 ANOTÁCIA | JUNIT 5 - ANOTÁCIA | Stručný popis |
---|---|---|
@FixMethodOrder | @TestMethodOrder & @Order | 1. Tieto anotácie umožňujú užívateľovi zvoliť si poradie vykonávania metód v rámci testovacej triedy |
@Rule & @ClassRule | @ExtendWith | 1. @Rule - Anotácia je rozšírená z triedy TestRule, ktorá pomáha uplatňovať určité pravidlá na testovacie prípady. 2. Napríklad: vytvorenie dočasného priečinka pred vykonaním testovacieho prípadu a odstránenie priečinka po vykonaní testu je možné nastaviť pomocou pravidla. 3. @Rule je k dispozícii iba v JUnit 4, ktorý je možné použiť v JUnit 5 Vintage, @ExtendWith však poskytuje bližšiu funkciu pre JUnit 5 4. Podobne je možné nastaviť globálny časový limit pomocou @Rule. |
NA | @TestFactory | 1. Táto anotácia je podporovaná iba na JUnit 5 a pomáha vytvárať dynamické alebo runtime testy. 2. Vráti prúd údajov ako zber a nemôže používať anotácie spätného volania počas celého životného cyklu |
NA | @ Vnorené | 1. Túto anotáciu podporuje iba JUnit Jupiter 2. Pomáha nám vytvárať vnorené testovacie prípady. 3. Napríklad trieda 1 s testovacím kufrom 1 môže mať @Nested triedu 2 s testovacím kufrom 2. Vďaka tomu sa testovací kufrík 2 stane vnoreným testovacím kufríkom s testovacím kufríkom 1. Preto sa vykoná testovací kufrík 1 a spustí sa testovací kufrík 2. 4. Ak sa nepoužíva anotácia @Nested, vnorená trieda sa nespustí. |
@Category | @Tag | 1. Táto anotácia pomáha pri označovaní a filtrovaní testov 2. Môžete zahrnúť testy na vykonanie alebo ich vylúčiť filtrovaním na základe kategórií, do ktorých spadajú. |
@RunWith (Parameterized.class) @ Parametrizované. Parametre | @ParameterizedTest a @ValueSource | 1. Táto anotácia sa používa na spustenie metódy s variáciami testovacích údajov viackrát. 2. JUnit 4 podporuje @RunWith a @Parameters, zatiaľ čo JUnit 5 Jupiter podporuje @ParameterizedTest s @ValueSource |
@Zobraziť meno | 1. Používateľom definovaný názov je možné na účely zobrazenia pomenovať podľa testovacej metódy alebo triedy. | |
@TestInstance (LifeCycle.PER_CLASS) a @TestInstance (LifeCycle.PER_METHOD) | 1. JUnit 5 podporuje konfiguráciu životného cyklu testov. 2. JUnit 4 aj 5 dodržiavajú predvolené spätné volanie podľa životného cyklu metódy, pričom je možné vykonať aj konfiguráciu podľa triedy. |
Referencie => JUnit 4 , JUnit 5
Záver
- Dozvedeli sme sa o anotáciách spätného volania životného cyklu a postupnom pracovnom toku, v ktorom sa testovacie metódy vykonávajú na základe ich anotácií.
- Dozvedeli sme sa anotácie použité pre JUnit 4 a anotácie pre JUnit 5.
- Dozvedeli sme sa tiež o ďalších anotáciách, ktoré JUnit 4 podporuje, a tých, ktoré podporujú iba JUnit 5.
=> Dajte si pozor na jednoduchú tréningovú sériu JUnit tu.
Odporúčané čítanie
- Čo je to testovacie zariadenie JUnit: Výukový program s príkladmi JUnit 4
- Testy JUnit: Ako napísať testovacie prípady JUnit s príkladmi
- Výukový program JUnit pre začiatočníkov - Čo je to Testovanie JUnit
- Stiahnite si, nainštalujte a nakonfigurujte JUnit v Eclipse
- Viacero spôsobov vykonávania testov JUnit
- Úvod do rámca JUnit a jeho použitie v selénovom skripte - selén výučba # 11
- Skrytý zoznam súborov a ďalších zbierok v Jave
- Metódy zoznamu Java - Zoradiť zoznam, Obsahuje, Pridať zoznam, Zoznam Odstrániť