Čo sú anotácie JUnit?
JUNIT ANNOTATIONS je špeciálna forma syntaktických metaúdajov, ktoré je možné pridať do zdrojového kódu Java pre lepšiu čitateľnosť a štruktúru kódu. Premenné, parametre, balíčky, metódy a triedy môžu byť anotované. V Junit4 boli zavedené anotácie, vďaka ktorým je kód Java čitateľnejší a jednoduchší. To je veľký rozdiel medzi Junit3 a Junit4, ktorý je založený na anotáciách.
Vďaka znalosti anotácií v Junit5 sa dá ľahko naučiť a implementovať test JUnit. Nižšie je uvedený zoznam dôležitých a často používaných anotácií:
S.No. | Anotácie | Popis |
---|---|---|
1. | @Test | Táto anotácia je náhradou súboru org.junit.TestCase, ktorý naznačuje, že metódu public void, ku ktorej je pripojená, je možné vykonať ako testovací prípad. |
2. | @ Predtým | Táto anotácia sa používa, ak chcete pred každým testovacím prípadom vykonať nejaké vyhlásenie, napríklad predpoklady. |
3. | @BeforeClass | Táto anotácia sa používa, ak chcete vykonať niektoré príkazy pred všetkými testovacími prípadmi, napr. Pred všetkými testovacími prípadmi sa musí vykonať testovacie pripojenie. |
4. | @ Potom | Túto anotáciu je možné použiť, ak chcete po každom testovacom prípade vykonať niektoré príkazy, napr. Vynulovanie premenných, odstránenie dočasných súborov, premenných atď. |
5. | @Po hodine | Túto anotáciu je možné použiť, ak chcete vykonať niektoré príkazy po všetkých testovacích prípadoch, napr. Uvoľnenie prostriedkov po vykonaní všetkých testovacích prípadov. |
6. | @ Ignoruje | Túto anotáciu je možné použiť, ak chcete ignorovať niektoré príkazy počas vykonávania testu, napríklad vypnúť niektoré testovacie prípady počas vykonávania testu. |
7. | @Test (časový limit = 500) | Túto anotáciu je možné použiť, ak chcete nastaviť časový limit počas vykonávania testu, napríklad ak pracujete na základe nejakej SLA (dohoda o úrovni služieb), a testy je potrebné dokončiť v stanovenom čase. |
8. | @Test (očakáva sa = IllegalArgumentException.class) | Túto anotáciu je možné použiť, ak chcete počas vykonávania testu spracovať nejakú výnimku. Napríklad, ak chcete skontrolovať, či konkrétna metóda vyvoláva zadanú výnimku alebo nie. |
V tomto návode sa naučíte
- Príklad anotácií JUnit
- JUnit Assert Class
- Trieda testovacích prípadov JUnit
- Trieda JUnit TestResult
- Trieda testovacej sady JUnit
Príklad anotácií JUnit
Vytvorme triedu pokrývajúcu dôležité anotácie JUnit jednoduchými tlačovými príkazmi a vykonajme ju pomocou triedy testovacieho bežca:
Krok 1) Zvážte nižšie uvedenú triedu java, ktorá má rôzne metódy, ktoré sú pripojené k vyššie uvedeným anotáciám:
JunitAnnotationsExample.java
balíček guru99.junit;importovať statický org.junit.Assert.assertEquals;importovať statický org.junit.Assert.assertFalse;import java.util.ArrayList;importovať org.junit.After;import org.junit.AfterClass;importovať org.junit.Before;import org.junit.BeforeClass;import org.junit.Ignore;import org.junit.Test;verejná trieda JunitAnnotationsExample {súkromný zoznam ArrayList;@BeforeClasspublic static void m1 () {System.out.println ("Používanie @BeforeClass, vykonané pred všetkými testovacími prípadmi");}@ Predtýmverejná neplatnosť m2 () {list = new ArrayList ();System.out.println ("Používanie anotácií @Before, vykonaných pred každým testovacím prípadom");}@Po hodinepublic static void m3 () {System.out.println ("Používanie @AfterClass, spustené po všetkých testovacích prípadoch");}@ Potompublic void m4 () {list.clear ();System.out.println ("Používanie @After, vykonávané po každom testovacom prípade");}@Testpublic void m5 () {list.add ("test");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}@Ignorovaťpublic void m6 () {System.out.println ("Pri použití @Ignore je toto spustenie ignorované");}@Test (časový limit = 10)public void m7 () {System.out.println ("Pomocou funkcie @Test (časový limit) sa dá použiť na vynútenie časového limitu v testovacom prípade JUnit4");}@Test (očakáva sa = NoSuchMethodException.class)public void m8 () {System.out.println ("Pomocou @Test (očakáva sa) skontroluje počas vykonávania špecifikovanú výnimku");}}
Krok 2) vytvorme triedu testovacieho bežca na vykonanie vyššie uvedeného testu:
TestRunner.java
balíček guru99.junit;import org.junit.runner.JUnitCore;import org.junit.runner.Result;import org.junit.runner.notification.Failure;verejná trieda TestRunner {public static void main (String [] args) {Výsledok = JUnitCore.runClasses (JunitAnnotationsExample.class);pre (Zlyhanie zlyhania: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Výsledok ==" + result.wasSuccessful ());}}
ocakavane vysledky
- Všetky testovacie prípady sa vykonajú jeden po druhom a všetky tlačové vyhlásenia sa zobrazia na konzole.
- Ako je uvedené v predchádzajúcej tabuľke @Before, @BeforeClass [metóda m1 () a m2 ()] sa vykonajú pred každým a pred všetkými testovacími prípadmi.
- Rovnakým spôsobom sa po každom, respektíve po všetkých testovacích prípadoch vykoná @ after, @ afterClass (metóda m3 () a m4 ()). @ignore (metóda m6 ()) bude považované za ignorovanie testu.
Poďme podrobne analyzovať testovacie prípady použité vo vyššie uvedenej triede Java:
- Zvážte metódu m5 (), ktorá je uvedená nižšie:
@Testpublic void m5 () {list.add ("test");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}
Vo vyššie uvedenom spôsobe, keď pridávate reťazec do premennej „list“, tak
- list.isEmpty () vráti hodnotu false.
- assertFalse (list.isEmpty ()) musí vrátiť hodnotu true.
- Výsledkom bude, že testovací prípad prejde .
Pretože ste do zoznamu pridali iba jeden reťazec, veľkosť je jedna.
- list.size () musí vrátiť hodnotu int ako "1".
- Takže assertEquals (1, list.size ()) musí vrátiť hodnotu true.
- Výsledkom bude, že testovací prípad prejde .
- Zvážte metódu m7 (), ktorá je uvedená nižšie:
@Test (časový limit = 10)public void m7 () {System.out.println ("Pomocou funkcie @Test (časový limit) sa dá použiť na vynútenie časového limitu v testovacom prípade JUnit4");}
Ako je uvedené vyššie, @Test (časový limit = 10) sa na vynútenie časového limitu v testovacom prípade používa anotácia.
- Zvážte metódu m8 (), ktorá je uvedená nižšie:
@Test (očakáva sa = NoSuchMethodException.class)public void m8 () {System.out.println ("Pomocou @Test (očakáva sa) skontroluje počas vykonávania špecifikovanú výnimku");}
Ako je uvedené vyššie, @Test (očakáva sa) bude počas vykonávania kontrolovať zadanú výnimku, takže metóda m8 () vyvolá hlásenie „Žiadna takáto výnimka metódy“. Vo výsledku sa test vykoná s výnimkou.
Po úspešnom absolvovaní všetkých testovacích prípadov bude výsledkom úspešné vykonanie testu.
Skutočný výsledok
Pretože vo vyššie uvedenom príklade sú tri testovacie prípady, všetky testovacie prípady sa vykonajú jeden po druhom. Pozri výstup nižšie :
Nižšie nájdete tlačové vyhlásenia, ktoré môžete vidieť na konzole:
Pomocou @BeforeClass, vykonaného pred všetkými testovacími prípadmi
Používanie anotácií @Before, vykonaných pred každým testovacím prípadom
Použitie @After, vykonané po každom testovacom prípade
Používanie anotácií @Before, vykonaných pred každým testovacím prípadom
Pomocou funkcie @Test (časový limit) sa dá použiť na vynútenie časového limitu v testovacom prípade JUnit4
Použitie @After, vykonané po každom testovacom prípade
Používanie anotácií @Before, vykonaných pred každým testovacím prípadom
Pomocou testu @Test (očakáva sa) skontroluje počas vykonávania špecifikovanú výnimku
Použitie @After, vykonané po každom testovacom prípade
Pomocou @AfterClass, vykonané po všetkých testovacích prípadoch
JUnit Assert Class
Táto trieda poskytuje množstvo metód tvrdenia užitočných pri písaní testovacieho prípadu. Ak sú splnené všetky tvrdenia, výsledky testu sú úspešné. Ak niektorý tvrdiaci výraz zlyhá, výsledky testu zlyhajú.
Ako ste videli skôr, nižšie uvedená tabuľka popisuje dôležité metódy a popis Assert:
S.No. | Metóda | Popis |
---|---|---|
1. | void assertEquals (očakáva sa boolean, boolean skutočný) | Kontroluje, či sú dve hodnoty rovnaké ako metóda equals v triede Object |
2. | void assertFalse (logická podmienka) | funkciou je skontrolovať, či je stav nepravdivý. |
3. | void assertNotNull (objekt objektu) | Funkciou „assertNotNull“ je skontrolovať, či objekt nemá hodnotu null. |
4. | void assertNull (objekt objektu) | Funkciou „assertNull“ je skontrolovať, či je objekt nulový. |
5. | void assertTrue (logická podmienka) | Funkcia „assertTrue“ slúži na kontrolu splnenia podmienky. |
6. | void fail () | Ak chcete hodiť akúkoľvek chybu tvrdenia, máte zlyhanie (), ktorého výsledkom je vždy verdikt zlyhania. |
7. | void assertSame ([String message] | Funkciou „assertSame“ je skontrolovať, či dva objekty odkazujú na rovnaký objekt. |
8. | void assertNotSame ([reťazcová správa] | Funkciou „assertNotSame“ je skontrolovať, či tieto dva objekty neodkazujú na rovnaký objekt. |
Trieda testovacích prípadov JUnit
Ak chcete spustiť viac testov, v balíkoch org.junit.TestCase je k dispozícii trieda TestCase . Anotácia @Test hovorí JUnit, že túto metódu verejnej neplatnosti (tu je testovací prípad), ku ktorej je pripojená, je možné spustiť ako testovací prípad.
Nasledujúca tabuľka zobrazuje niektoré dôležité metódy dostupné v triede org.junit.TestCase :
S.No. | Metóda | Popis |
---|---|---|
1. | int countTestCases () | Táto metóda sa používa na výpočet počtu testovacích prípadov vykonaných metódou run (TestResult tr) . |
2. | TestResult createResult () | Táto metóda sa používa na vytvorenie objektu TestResult . |
3. | Reťazec getName () | Táto metóda vráti reťazec, ktorý nie je nič iné ako TestCase . |
4. | TestResult run () | Táto metóda sa používa na vykonanie testu, ktorý vráti objekt TestResult |
5. | void run (výsledok TestResult) | Táto metóda sa používa na vykonanie testu s objektom TestResult, ktorý nevracia nič. |
6. | void setName (názov reťazca) | Táto metóda sa používa na nastavenie názvu TestCase. |
7. | void setUp () | Táto metóda sa používa na zápis kódu asociácie prostriedkov. napr. Vytvorte databázové pripojenie. |
8. | void tearDown () | Táto metóda sa používa na zápis kódu na uvoľnenie prostriedkov. napr. Uvoľnite pripojenie k databáze po vykonaní transakčnej operácie. |
Trieda JUnit TestResult
Po vykonaní testu vráti výsledok (vo forme objektu TestResult ). Tento objekt TestResult je možné použiť na analýzu výsledného objektu. Výsledkom tohto testu môže byť neúspech alebo úspech. V tabuľke nižšie nájdete dôležité metódy používané v triede org.junit.TestResult:S.No. | Metóda | Popis |
---|---|---|
1. | void addError (Testovací test, hoditeľné t) | Táto metóda sa používa, ak požadujete do testu pridať chybu. |
2. | void addFailure (Testovací test, AssertionFailedError t) | Táto metóda sa používa, ak požadujete pridanie zlyhania do zoznamu zlyhaní. |
3. | void endTest (testovací test) | Táto metóda sa používa na upozornenie, že je vykonaný test (dokončený). |
4. | int errorCount () | Táto metóda sa používa na získanie chyby zistenej počas vykonávania testu. |
5. | Chyby | Táto metóda jednoducho vráti kolekciu (tu uvedený zoznam) chýb. |
6. | int failureCount () | Táto metóda sa používa na získanie počtu chýb zistených počas vykonávania testu. |
7. | neplatný chod (test TestCase) | Táto metóda sa používa na vykonanie testovacieho prípadu. |
8. | int runCount () | Táto metóda jednoducho počíta vykonaný test. |
9. | void startTest (testovací test) | Táto metóda slúži na upozornenie, že je spustený test. |
10. | void stop () | Táto metóda sa používa na testovanie zastavenia chodu. |
Trieda testovacej sady JUnit
Ak chcete vykonať viac testov v určenom poradí, je možné to urobiť kombináciou všetkých testov na jednom mieste. Toto miesto sa nazýva testovacie sady.
V tabuľke nižšie nájdete dôležité metódy používané v triede org.junit.TestSuite :
S.No. | Metóda | Popis |
---|---|---|
1. | void addTest (testovací test) | Táto metóda sa používa, ak chcete do balíka pridať test. |
2. | void addTestSuite (Class extends TestCase> testClass) | Táto metóda sa používa, ak chcete určiť triedu pri pridávaní testu do balíka. |
3. | int countTestCases () | Táto metóda sa používa, ak chcete spočítať počet testovacích prípadov. |
4. | Reťazec getName () | Táto metóda sa používa na získanie názvu testovacej sady. |
5. | void run (výsledok TestResult) | Táto metóda sa používa na vykonanie testu a zhromaždenie výsledku testu v objekte TestResult . |
6. | void setName (názov reťazca) | Táto metóda sa používa na nastavenie názvu TestSuite . |
7. | Test testAt (int index) | Táto metóda sa používa, ak chcete vrátiť test pri danom indexe. |
8. | int testCount () | Táto metóda sa používa, ak chcete v balíku vrátiť niekoľko testov. |
9. | varovanie pred statickým testom (reťazcová správa) | Táto metóda vráti test, ktorý zlyhá, a zaznamená varovnú správu. |
Zhrnutie:
- JUnit poskytuje prenosné API, ktoré poskytuje všetky dôležité triedy a anotácie užitočné pri písaní testu jednotky.
- Triedy, ktoré sú veľmi užitočné pri písaní testovacieho prípadu
- org.junit.Assert
- org.junit.TestCase
- org.junit.TestResult
- org.junit.TestSuite
- zoznam dôležitých a často používaných anotácií
@ Predtým
@BeforeClass
@ Potom
@Po hodine
@Test
@Ignorovať