JUnit je najobľúbenejší testovací rámec jednotiek v Jave. Je to výslovne odporúčané pre testovanie jednotiek. JUnit nevyžaduje na testovanie webových aplikácií server, vďaka čomu je testovací proces rýchly.
Rámec JUnit tiež umožňuje rýchle a ľahké generovanie testovacích prípadov a testovacích údajov. Balík org.Junit pozostáva z mnohých rozhraní a tried pre testovanie JUnit, ako sú Test, Assert, After, Before, atď.
Čo je to testovacie zariadenie
Skôr ako pochopíme, čo je to testovacie zariadenie, preštudujme si kód uvedený nižšie
Tento kód je navrhnutý na vykonanie dvoch testovacích prípadov na jednoduchom súbore.
verejná trieda OutputFileTest {výstup súkromného súboru;výstup = nový súbor (…);output.delete ();public void testFile1 () {// Kód na overenie testovacieho prípadu 1}output.delete ();výstup = nový súbor (…);public void testFile2 () {// Kód na overenie testovacieho prípadu 2}output.delete ();}
Tu pár problémov
- Kód nie je čitateľný
- Tento kód nie je ľahký na údržbu.
- Keď je testovacia sada zložitá, kód môže obsahovať logické problémy.
Rovnaký kód porovnajte pomocou nástroja JUnit
verejná trieda OutputFileTest{výstup súkromného súboru;@ Pred verejnou neplatnosťou createOutputFile (){výstup = nový súbor (…);}@ Po verejnej neplatnosti deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// kód pre objekt testovacieho prípadu}@Test public void testFile2 (){// kód pre objekt testovacieho prípadu}}
Kód je oveľa čitateľnejší a udržiavateľnejší. Vyššie uvedená štruktúra kódu je testovacím prípravkom.
Testovacie zariadenie je kontext, v ktorom beží testovací prípad. Testovacie prípravky zvyčajne zahŕňajú:
- Objekty alebo zdroje, ktoré sú k dispozícii pre akýkoľvek testovací prípad.
- Vyžadované činnosti, ktoré sprístupňujú tieto objekty / zdroje.
- Tieto činnosti sú
- alokácia ( nastavenie )
- zrušenie pridelenia ( odtrhnutie ).
Nastavenie a demontáž
- Zvyčajne existujú určité opakované úlohy, ktoré je potrebné vykonať pred každým testovacím prípadom. Príklad: Vytvorte databázové pripojenie.
- Rovnako tak na konci každého testovacieho prípadu môžu byť niektoré opakované úlohy. Príklad: vyčistiť po ukončení vykonávania testu.
- JUnit poskytuje poznámky, ktoré pomáhajú pri nastavovaní a rozbaľovaní. Zaisťuje uvoľnenie prostriedkov a testovací systém je pripravený na ďalší testovací prípad.
Tieto anotácie sú diskutované nižšie -
Nastaviť
Anotácia @Before sa používa na metódu obsahujúcu kód Java, ktorá sa má spustiť pred každým testovacím prípadom. tj beží pred každým vykonaním testu.
Teardown (bez ohľadu na verdikt)
@ Po anotácii sa používa metóda obsahujúca kód Java, ktorá sa má spustiť po každom testovacom prípade. Tieto metódy budú fungovať, aj keď v testovacom prípade alebo v prípade zlyhania tvrdenia dôjde k výnimkám.
Poznámka:
- Je povolené mať akýkoľvek počet anotácií uvedených vyššie.
- Všetky metódy anotované s @Before budú spustené pred každým testovacím prípadom, ale môžu byť spustené v akomkoľvek poradí.
- Metódy @Before a @After môžete dediť zo super triedy, vykonanie je nasledovné: Je to štandardný proces vykonávania v JUnit.
- Vykonajte metódy @Before v nadtriede
- V tejto triede vykonajte metódy @Before
- V tejto triede vykonajte metódu @Test
- Vykonajte metódy @After v tejto triede
- Vykonajte metódy @After v nadtriede
Príklad: Vytvorenie triedy so súborom ako testovacím prípravkom
verejná trieda OutputFileTest{výstup súkromného súboru;@ Pred verejnou neplatnosťou createOutputFile (){výstup = nový súbor (…);}@ Po verejnej neplatnosti deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// kód pre objekt testovacieho prípadu}@Test public void testFile2 (){// kód pre objekt testovacieho prípadu}}
Vo vyššie uvedenom príklade bude reťazec výkonu nasledujúci -
- createOutputFile ()
- testFile1 ()
- deleteOutputFile ()
- createOutputFile ()
- testFile2 ()
- deleteOutputFile ()
Predpoklad: testFile1 () beží pred testFile2 () - čo nie je zaručené.
Nastavenie iba raz
- Je možné spustiť metódu iba raz pre celú testovaciu triedu pred vykonaním ktoréhokoľvek z testov a pred akoukoľvek metódou @Before .
- „Len raz nastavenie“ je užitočné pri spúšťaní serverov, otváraní komunikácií atď. Zavrieť a znova otvoriť zdroje pre každý test je časovo náročné.
- To je možné vykonať pomocou anotácie @BeforeClass
@BeforeClass public static void Method_Name () {// kód nastavenia triedy tu}
Raz len zbúrať
- Podobne ako pri nastavení iba raz je k dispozícii aj metóda čistenia iba raz. Spustí sa po vykonaní všetkých metód testovacích prípadov a po vykonaní anotácií.
- Je to užitočné na zastavenie serverov, ukončenie komunikačných spojení atď.
- To je možné vykonať pomocou anotácie @AfterClass
@AfterClass public static void Method_Name (){// kód na vyčistenie triedy tu}
JUnit Test Suites
Ak chceme vykonať viac testov v stanovenom poradí, je to možné spojením všetkých testov na jednom mieste. Toto miesto sa nazýva testovacie sady. Viac podrobností o tom, ako vykonávať testovacie balíčky a ako sa používa v JUnit, sa dozvieme v tomto výučbe.
Testovací bežec Junit
JUnit poskytuje nástroj na vykonávanie vašich testovacích prípadov.
- Na vykonanie týchto testov sa používa trieda JUnitCore .
- Na spustenie jednej alebo viacerých testovacích tried sa používa metóda s názvom runClasses poskytovaná org.junit.runner.JUnitCore .
- Návratovým typom tejto metódy je objekt Result ( org.junit.runner.Result ), ktorý sa používa na prístup k informáciám o testoch. Pre väčšiu prehľadnosť viď nasledujúci príklad kódu.
test verejnej triedy {public static void main (String [] args) {Výsledok = JUnitCore.runClasses (CreateAndSetName.class);pre (Zlyhanie zlyhania: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println (result.wasSuccessful ());}}
Vo vyššie uvedenom kóde je objekt „result“ spracovaný tak, aby získal zlyhania a úspešné výsledky testovacích prípadov, ktoré vykonávame.
Prvý program JUnit
Dôkladná znalosť SDLC, programovania v jazyku Java a základy procesu testovania softvéru pomáha porozumieť programu JUnit.
Poďme pochopiť Testovanie jednotiek na živom príklade. Musíme vytvoriť testovaciu triedu s testovacou metódou anotovanou s @Test, ako je uvedené nižšie:
MyFirstClassTest.java
balíček guru99.JUnit;import statickej org.JUnit.Assert. *;import org.JUnit.Test;verejná trieda MyFirstClassTest {@Testpublic void myFirstMethod () {String str = "JUnit funguje dobre";assertEquals ("JUnit funguje dobre", str);}}
TestRunner.java
Na vykonanie našej testovacej metódy (vyššie) je potrebné vytvoriť testovacieho bežca. V testovacom bežcovi musíme pridať testovaciu triedu ako parameter v metóde runclasses () JUnitCore. Vráti výsledok testu na základe toho, či bol test úspešný alebo neúspešný.
Viac podrobností nájdete v nižšie uvedenom kóde:
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 (MyFirstClassTest.class);pre (Zlyhanie zlyhania: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Výsledok ==" + result.wasSuccessful ());}}
Výkon
Akonáhle TestRunner.java vykoná naše testovacie metódy, dostaneme výstup ako neúspešný alebo úspešný. Nižšie nájdete vysvetlenie výstupu:
- V tomto príklade po vykonaní MyFirstClassTest.java je test úspešný a výsledok je zelený.
- Ak by zlyhala, mala by mať výsledok červený a zlyhanie je možné pozorovať v stope zlyhania. Pozri nižšie JUnit gui:
Zhrnutie :
- JUnit je rámec, ktorý podporuje niekoľko anotácií na identifikáciu metódy obsahujúcej test.
- JUnit poskytuje anotáciu nazvanú @Test, ktorá informuje JUnit o tom, že metóda public void, v ktorej sa používa, môže bežať ako testovací prípad.
- Testovacie zariadenie je kontext, v ktorom prebieha testovací prípad
- Ak chcete vykonať viac testov v určenom poradí, je to možné vykonaním kombinácie všetkých testov na jednom mieste. Toto miesto sa nazýva testovacie sady.
- JUnit poskytuje nástroj na vykonávanie testov, kde môžeme spúšťať naše testovacie prípady označované ako Test Runner.