Programové spustenie testov JUnit z aplikácie Java
1. Prehľad
V tejto príručke si ukážeme ako spustiť testy JUnit priamo z kódu Java - existujú scenáre, kedy sa táto možnosť hodí.
Ak ste v JUnit nováčikom alebo chcete upgradovať na JUnit 5, môžete si pozrieť niektoré z mnohých tutoriálov, ktoré k tejto téme máme.
2. Maven závislosti
Na spustenie testov JUnit 4 a JUnit 5 budeme potrebovať niekoľko základných závislostí:
org.junit.jupiter junit-jupiter-engine 5.2.0 test org.junit.platform junit-platform-launcher 1.2.0 // pre test JUnit 4 junit junit 4.12
Najnovšie verzie JUnit 4, JUnit 5 a JUnit Platform Launcher nájdete na serveri Maven Central.
3. Spustenie testov JUnit 4
3.1. Scenár testu
Pre JUnit 4 aj JUnit 5 nastavíme niekoľko testovacích tried „zástupných“, ktoré budú stačiť na demonštráciu našich príkladov:
public class FirstUnitTest {@Test public void whenThis_thenThat () {assertTrue (true); } @Test public void whenSomething_thenSomething () {assertTrue (true); } @Test public void whenSomethingElse_thenSomethingElse () {assertTrue (true); }}
public class SecondUnitTest {@Test public void whenSomething_thenSomething () {assertTrue (true); } @Test public void whensomethingElse_thenSomethingElse () {assertTrue (true); }}
Pri použití JUnit 4 vytvoríme testovacie triedy pridaním @Test anotácia ku každej skúšobnej metóde.
Môžeme pridať aj ďalšie užitočné anotácie, ako napr @ Predtým alebo @ Potom, ale to nie je v rozsahu tohto tutoriálu.
3.2. Spustenie jednej testovacej triedy
Na spustenie testov JUnit z kódu Java môžeme použiť JUnitCore trieda (s dodatkom TextListener triedy, ktorá sa používa na zobrazenie výstupu v System.out):
JUnitCore junit = nový JUnitCore (); junit.addListener (nový TextListener (System.out)); junit.run (FirstUnitTest.class);
Na konzole sa zobrazí veľmi jednoduchá správa označujúca úspešné testy:
Priebeh jednej testovacej triedy: .. Čas: 0,019 OK (2 testy)
3.3. Spúšťanie viacerých testovacích tried
Ak chceme určiť viac testovacích tried s JUnit 4 môžeme použiť rovnaký kód ako pre jednu triedu a jednoducho pridať ďalšie triedy:
JUnitCore junit = nový JUnitCore (); junit.addListener (nový TextListener (System.out)); Výsledok výsledok = junit.run (FirstUnitTest.class, SecondUnitTest.class); resultReport (výsledok);
Výsledok je uložený v inštancii JUnit Výsledok triedy, ktorú tlačíme pomocou jednoduchej obslužnej metódy:
public static void resultReport (Výsledok) {System.out.println ("Hotovo. Výsledok: Zlyhania:" + result.getFailureCount () + ". Ignorované:" + result.getIgnoreCount () + ". Spustené testy:" + výsledok .getRunCount () + ". Čas:" + výsledok.getRunTime () + "ms."); }
3.4. Spustenie testovacej sady
Ak potrebujeme niektoré testovacie triedy zoskupiť, aby sme ich mohli spustiť, môžeme vytvoriť a TestSuite. Toto je iba prázdna trieda, kde určujeme všetky triedy pomocou anotácií JUnit:
@RunWith (Suite.class) @ Suite.SuiteClasses ({FirstUnitTest.class, SecondUnitTest.class}) verejná trieda MyTestSuite {}
Na spustenie týchto testov použijeme opäť rovnaký kód ako predtým:
JUnitCore junit = nový JUnitCore (); junit.addListener (nový TextListener (System.out)); Výsledok = junit.run (MyTestSuite.class); resultReport (výsledok);
3.5. Spúšťanie opakovaných testov
Jednou zo zaujímavých funkcií JUnit je, že môžeme opakujte testy vytváraním inštancií Opakovaný test. To môže byť skutočne užitočné pri testovaní náhodných hodnôt alebo pri kontrolách výkonu.
V nasledujúcom príklade spustíme testy z MergeListsTest päť krát:
Testovací test = nový JUnit4TestAdapter (FirstUnitTest.class); Opakovaný test Opakovaný test = nový Opakovaný test (test, 5); JUnitCore junit = nový JUnitCore (); junit.addListener (nový TextListener (System.out)); junit.run (opakovaneTest);
Tu používame JUnit4TestAdapter ako obal pre našu testovaciu triedu.
Môžeme dokonca vytvoriť programové súbory pomocou opakovaného testovania:
TestSuite mySuite = nový ActiveTestSuite (); JUnitCore junit = nový JUnitCore (); junit.addListener (nový TextListener (System.out)); mySuite.addTest (nový RepeatedTest (nový JUnit4TestAdapter (FirstUnitTest.class), 5)); mySuite.addTest (nový RepeatedTest (nový JUnit4TestAdapter (SecondUnitTest.class), 3)); junit.run (mySuite);
4. Spustenie testov JUnit 5
4.1. Scenár testu
S JUnit 5 použijeme rovnaké ukážkové testovacie triedy ako pre predchádzajúcu ukážku - FirstUnitTest a SecondUnitTest, s malými rozdielmi v dôsledku inej verzie rámca JUnit, napríklad balíka pre @Test a metódy tvrdenia.
4.2. Priebeh jednej testovacej triedy
Ak chcete spustiť testy JUnit 5 z kódu Java, nastavíme inštanciu LauncherDiscoveryRequest. Používa triedu staviteľa, kde musíme nastaviť selektory balíkov a filtre názvov tried testov, aby sme dostali všetky testovacie triedy, ktoré chceme spustiť.
Táto požiadavka je potom spojená s launcherom a pred vykonaním testov tiež nastavíme plán testov a poslucháča vykonávania.
Oba ponúkajú informácie o testoch, ktoré sa majú vykonať, a o výsledkoch:
verejná trieda RunJUnit5TestsFromJava {SummaryGeneratingListener listener = nový SummaryGeneratingListener (); public void runOne () {LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request () .selectors (selectClass (FirstUnitTest.class)) .build (); Launcher launcher = LauncherFactory.create (); TestPlan testPlan = launcher.discover (požiadavka); launcher.registerTestExecutionListeners (poslucháč); launcher.execute (žiadosť); } // hlavna metoda ...}
4.3. Spúšťanie viacerých testovacích tried
Môžeme nastaviť selektory a filtre na požiadavku na spustenie viacerých testovacích tried.
Pozrime sa, ako môžeme nastaviť selektory balíkov a testovanie filtrov názvov tried, aby sme dostali všetky testovacie triedy, ktoré chceme spustiť:
public void runAll () {LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request () .selectors (selectPackage ("com.baeldung.junit5.runfromjava")) .filters (includeClassNamePatterns (". * Test")) .build (); Launcher launcher = LauncherFactory.create (); TestPlan testPlan = launcher.discover (požiadavka); launcher.registerTestExecutionListeners (poslucháč); launcher.execute (žiadosť); }
4.4. Výstup testu
V hlavný() metódy, zavoláme našu triedu a pomocou poslucháča tiež získame podrobnosti o výsledku. Výsledok sa tentoraz uloží ako a TestExecutionSummary.
Najjednoduchší spôsob, ako extrahovať jeho informácie, je iba tlač do výstupného prúdu konzoly:
public static void main (String [] args) {RunJUnit5TestsFromJava runner = nový RunJUnit5TestsFromJava (); runner.runAll (); Zhrnutie TestExecutionSummary = runner.listener.getSummary (); summary.printTo (nový PrintWriter (System.out)); }
Získate tak podrobnosti o našej testovacej prevádzke:
Testovacia prevádzka ukončená po 177 ms [7 nájdených kontajnerov] [0 kontajnerov preskočených] [7 kontajnerov spustených] [0 kontajnerov prerušených] [7 kontajnerov úspešných] [0 kontajnerov zlyhalo] [10 nájdených testov] [0 testov preskočených] [10 testov spustených ] [0 testov prerušených] [10 úspešných testov] [0 testov zlyhalo]
5. Záver
V tomto článku sme si ukázali, ako programovo spustiť testy JUnit z kódu Java, ktoré pokrývajú JUnit 4 aj nedávnu verziu tohto testovacieho rámca JUnit 5.
Implementácia príkladov, ktoré sú tu zobrazené, je ako vždy k dispozícii na serveri GitHub pre príklady JUnit 5, ako aj JUnit 4.