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.


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