Programsko izvođenje JUnit testova iz Java aplikacije

1. Pregled

U ovom uputstvu ćemo pokazati kako pokrenuti JUnit testove izravno s Java koda - postoje scenariji u kojima ova opcija dobro dođe.

Ako ste novi u JUnit-u ili ako želite nadograditi na JUnit 5, možete provjeriti neke od mnogih vodiča koje imamo o toj temi.

2. Ovisnosti Mavena

Trebat će nam nekoliko osnovnih ovisnosti za pokretanje testova JUnit 4 i JUnit 5:

  org.junit.jupiter junit-jupiter-engine 5.2.0 test org.junit.platform junit-platform-launcher 1.2.0 // za JUnit 4 junit junit 4.12 test 

Najnovije verzije JUnit 4, JUnit 5 i JUnit Platform Launcher mogu se naći na Maven Central.

3. Pokretanje testova JUnit 4

3.1. Testni scenarij

I za JUnit 4 i za JUnit 5 postavit ćemo nekoliko klasa testa „rezerviranog mjesta“ što će biti dovoljno za demonstraciju naših primjera:

javna klasa FirstUnitTest {@Test public void whenThis_thenThat () {assertTrue (true); } @Test public void whenSomething_thenSomething () {assertTrue (true); } @Test public void whenSomethingElse_thenSomethingElse () {assertTrue (true); }}
javna klasa SecondUnitTest {@Test public void whenSomething_thenSomething () {assertTrue (true); } @Test public void whensomethingElse_thenSomethingElse () {assertTrue (true); }}

Kada koristimo JUnit 4, kreiramo dodavanje test klasa @Test napomena za svaku ispitnu metodu.

Možemo dodati i druge korisne bilješke, kao što su @Prije ili @Nakon, ali to nije u dosegu ovog vodiča.

3.2. Izvođenje jednog testnog predavanja

Za pokretanje JUnit testova iz Java koda možemo koristiti JUnitCore razred (s dodatkom TextListener klasa, koja se koristi za prikaz rezultata u System.out):

JUnitCore junit = novi JUnitCore (); junit.addListener (novi TextListener (System.out)); junit.run (FirstUnitTest.class);

Na konzoli ćemo vidjeti vrlo jednostavnu poruku koja ukazuje na uspješne testove:

Izvođenje jedne klase testa: .. Vrijeme: 0,019 OK (2 testa)

3.3. Pokretanje višestrukih ispitnih tečajeva

Ako želimo za određivanje višestrukih klasa ispitivanja s JUnit 4 možemo koristiti isti kod kao za jednu klasu i jednostavno dodati dodatne klase:

JUnitCore junit = novi JUnitCore (); junit.addListener (novi TextListener (System.out)); Rezultat rezultata = junit.run (FirstUnitTest.class, SecondUnitTest.class); resultReport (rezultat);

Imajte na umu da je rezultat pohranjen u instanci JUnit-a Proizlaziti klase, koju ispisujemo jednostavnom korisnom metodom:

javna statička void resultReport (rezultat rezultata) {System.out.println ("Završeno. Rezultat: Neuspjesi:" + result.getFailureCount () + ". Zanemareno:" + result.getIgnoreCount () + ". Testovi:" + rezultat .getRunCount () + ". Vrijeme:" + result.getRunTime () + "ms."); } 

3.4. Pokretanje testnog paketa

Ako trebamo grupirati neke ispitne razrede kako bismo ih pokrenuli, možemo stvoriti TestSuite. Ovo je samo prazna klasa u kojoj specificiramo sve klase koristeći JUnit bilješke:

@RunWith (Suite.class) @ Suite.SuiteClasses ({FirstUnitTest.class, SecondUnitTest.class}) javna klasa MyTestSuite {}

Za pokretanje ovih testova ponovno ćemo upotrijebiti isti kod kao i prije:

JUnitCore junit = novi JUnitCore (); junit.addListener (novi TextListener (System.out)); Rezultat rezultata = junit.run (MyTestSuite.class); resultReport (rezultat);

3.5. Izvođenje ponovljenih testova

Jedna od zanimljivih značajki JUnit-a je ta da možemo ponovite testove stvaranjem primjeraka Ponovljeni test. To može biti od velike pomoći kada testiramo slučajne vrijednosti ili za provjeru izvedbe.

U sljedećem ćemo primjeru pokrenuti testove iz MergeListsTest pet puta:

Test test = novi JUnit4TestAdapter (FirstUnitTest.class); RepeatedTest repeatTest = novi RepeatedTest (test, 5); JUnitCore junit = novi JUnitCore (); junit.addListener (novi TextListener (System.out)); junit.run (ponovljeniTest);

Evo, koristimo JUnit4TestAdapter kao omot za našu probnu klasu.

Čak i programski možemo izrađivati ​​apartmane, primjenjujući ponovljena testiranja:

TestSuite mySuite = novi ActiveTestSuite (); JUnitCore junit = novi JUnitCore (); junit.addListener (novi TextListener (System.out)); mySuite.addTest (novi ponovljeni test (novi JUnit4TestAdapter (FirstUnitTest.class), 5)); mySuite.addTest (novi ponovljeni test (novi JUnit4TestAdapter (SecondUnitTest.class), 3)); junit.run (mySuite);

4. Pokretanje testova JUnit 5

4.1. Testni scenarij

S JUnit 5 koristit ćemo iste primjere klasa testa kao i za prethodni demo - FirstUnitTest i SecondUnitTest, s nekim manjim razlikama zbog drugačije verzije JUnit okvira, poput paketa za @Test i metode tvrđenja.

4.2. Trčanje pojedinačne ispitne klase

Za pokretanje testova JUnit 5 iz Java koda postavit ćemo instancu LauncherDiscoveryRequest. Koristi graditeljsku klasu u kojoj moramo postaviti selektore paketa i filtere za testiranje naziva klase kako bismo dobili sve testne klase koje želimo pokrenuti.

Ovaj je zahtjev tada povezan s pokretačem, a prije izvođenja testova postavit ćemo i plan ispitivanja i preslušavač izvršenja.

Obje će ponuditi informacije o testovima koji će se izvesti i rezultatima:

javna klasa RunJUnit5TestsFromJava {SummaryGeneratingListener listener = new SummaryGeneratingListener (); javna void runOne () {LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request () .selectors (selectClass (FirstUnitTest.class)) .build (); Pokretač pokretača = LauncherFactory.create (); TestPlan testPlan = lanser.discover (zahtjev); launcher.registerTestExecutionListeners (slušatelj); launcher.execute (zahtjev); } // glavna metoda ...}

4.3. Pokretanje višestrukih test klasa

Na zahtjev možemo postaviti selektore i filtre za pokretanje višestrukih klasa ispitivanja.

Pogledajmo kako možemo postaviti selektore paketa i filtre naziva klase testiranja kako bismo dobili sve klase testiranja koje želimo pokrenuti:

public void runAll () {LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request () .selectors (selectPackage ("com.baeldung.junit5.runfromjava")) .filters (includeClassNamePatterns (". * Test")) .build (); Pokretač pokretača = LauncherFactory.create (); TestPlan testPlan = lanser.discover (zahtjev); launcher.registerTestExecutionListeners (slušatelj); launcher.execute (zahtjev); } 

4.4. Rezultat testa

U glavni() metodu nazivamo razredom, a slušatelja koristimo i za dobivanje detalja o rezultatu. Ovaj put rezultat se pohranjuje kao TestExecutionSummary.

Najjednostavniji način za izvlačenje njegovih podataka jest ispis u izlazni tok konzole:

javna statička void glavna (String [] args) {RunJUnit5TestsFromJava runner = new RunJUnit5TestsFromJava (); runner.runAll (); Sažetak TestExecutionSummary = runner.listener.getSummary (); summary.printTo (novi PrintWriter (System.out)); }

To će nam dati detalje našeg probnog rada:

Probno pokretanje završeno nakon 177 ms [7 spremnika pronađeno] [0 preskočenih spremnika] [7 spremnika pokrenuto] [0 spremnika prekinuto] [7 spremnika uspješno] [0 spremnika nije uspjelo] [10 testova pronađeno] [0 preskočenih testova] [10 započetih ispitivanja ] [0 testova poništeno] [10 testova uspješno] [0 testova nije uspjelo]

5. Zaključak

U ovom smo članku pokazali kako se programski pokreću testovi JUnit iz Java koda, pokrivajući JUnit 4, kao i nedavnu verziju ovog okvira za testiranje JUnit 5.

Kao i uvijek, implementacija ovdje prikazanih primjera dostupna je na GitHub-u za oba primjera JUnit 5, kao i za JUnit 4.


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