JUnit Testni slučajevi @Before @BeforeClass Anotacija
⚡ Pametni sažetak
JUnit je najčešće korišteni okvir za jedinično testiranje Java, a njegove anotacije testnih učvršćenja kontroliraju točno što se događa prije i nakon što se svaka testna metoda pokrene unutar testne klase.
JUnit je najpopularnija jedinica Ispitivanje okvir u Java. Izričito se preporučuje za Ispitivanje jedinice. JUnit Ne zahtijeva poslužitelj za testiranje web aplikacije, što proces testiranja čini brzim.
The JUnit framework također omogućuje brzo i jednostavno generiranje testnih slučajeva i testnih podataka. The org.junit Paket se sastoji od mnogih sučelja i klasa za JUnit testiranje, kao što su Test, Assert, After i Before. Šire JUnit Obitelj gradi na istim tim gradivnim blokovima.
Što je ispitna naprava?
Prije nego što shvatimo što je testna fixture, proučimo donji kod.
Ovaj kod je dizajniran za izvršavanje dva testna slučaja na jednostavnoj datoteci.
public class OutputFileTest { private File output; output = new File(...); output.delete(); public void testFile1(){ //Code to verify Test Case 1 } output.delete(); output = new File(...); public void testFile2(){ //Code to verify Test Case 2 } output.delete(); }
Ovdje ima nekoliko problema
- Kod nije čitljiv.
- Kod nije lako održavati.
- Kada je testni paket složen, kôd može sadržavati logičke probleme.
Usporedite isti kod pomoću JUnit.
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
Kod je daleko čitljiviji i lakši za održavanje. Gornja struktura koda je ispitni uređaj.
Ispitni događaj je kontekst u kojem a JUnit Testni slučaj trči. Tipično, ispitni uređaji uključuju:
- Objekti ili resursi koji su dostupni za svaki testni slučaj.
- Aktivnosti potrebne da bi se ovi objekti i resursi učinili dostupnima.
- Ove aktivnosti su
- dodjela (postava)
- de-alokacija (skidanje).
Postavljanje i rastavljanje
Raspored je važan jer JUnit provlači ove udice oko svakog testa.
- Obično postoje neki ponovljeni zadaci koji se moraju obaviti prije svakog testa. Primjer: stvoriti vezu s bazom podataka.
- Isto tako, na kraju svakog ispitnog slučaja mogu postojati ponovljeni zadaci. Primjer: za čišćenje nakon završetka testa.
- JUnit pruža napomene koje pomažu u postavljanju i rastavljanju. Osigurava da su resursi oslobođeni i da je testni sustav u stanju spremnosti za sljedeći testni slučaj.
To JUnit Napomene se razmatraju u nastavku.
Postavljanje
@Prije anotacija u JUnit koristi se na metodi koja sadrži Java kod koji se izvršava prije svakog testnog slučaja, odnosno izvršava se prije svakog izvršavanja testa.
Rušenje (bez obzira na presudu)
@Nakon anotacija se koristi na metodi koja sadrži Java kod koji se pokreće nakon svakog testnog slučaja. Ove metode će se pokrenuti čak i ako se u testnom slučaju bace iznimke ili u slučaju neuspjeha tvrdnji.
Bilješka:
- Dopušteno je imati bilo koji broj gore navedenih zabilješki.
- Sve metode označene s @Prije in JUnit pokrenut će se prije svakog testnog slučaja, ali se mogu pokrenuti bilo kojim redoslijedom.
- Metode @Before i @After možete naslijediti iz nadklase. Izvršavanje je sljedeće i to je standardni proces izvršavanja u JUnit.
- Izvršite JUnit Metode @Before u superklasi
- Izvršite metode @Before u ovoj klasi
- Izvršite metodu @Test u ovoj klasi
- Izvršite metode @After u ovoj klasi
- Izvršite metode @After u superklasi
JUnit Napomena iz 5.: ove bilješke su JUnit 4 (org.junit). JUnit 5 ih je preimenovalo u org.junit.jupiter.api, A JUnit 4 koda ispod još uvijek radi pod vintage engine-om.
| JUnit 4 napomene | JUnit 5 (Jupiter) ekvivalent | Izvodi |
|---|---|---|
| @Prije | @PrijeSvakog | Prije svake metode ispitivanja |
| @Nakon | @NakonSvakog | Nakon svake metode ispitivanja |
| @Prije Klase | @PrijeSvega | Jednom pred cijelim razredom |
| @Nakon nastave | @Nakon svega | Jednom nakon cijelog razreda |
| @Zanemariti | @Onemogućeno | Preskače komentirani test |
Primjer: Izrada klase s datotekom kao testnim elementom
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
U gornjem primjeru lanac izvršenja bit će sljedeći. Dijagram tracjedan ciklus kreiraj-testiraj-briši po metodi testiranja.
- createOutputFile()
- testFile1()
- deleteOutputFile()
- createOutputFile()
- testFile2()
- deleteOutputFile()
Pretpostavka:
testFile1() se izvršava prije testFile2(), što nije zajamčeno.
Postavljanje samo jednom
- Moguće je pokrenuti metodu samo jednom za cijelu testnu klasu prije nego što se bilo koji od testova izvrši, i prije bilo kojeg @Prije metoda(e).
- "Postavljanje samo jednom" korisno je za pokretanje poslužitelja, otvaranje komunikacija i slične poslove. Zatvaranje i ponovno otvaranje resursa za svaki test oduzima puno vremena.
- To se može učiniti pomoću napomene @Prije Klase in JUnit.
@BeforeClass public static void Method_Name() { // class setup code here }
Metoda mora biti javna statična praznina, Jer je JUnit poziva ga prije nego što postoji bilo koja testna instanca.
Rušiti samo jednom
- Slično jednokratnom postavljanju, dostupna je i jednokratna metoda čišćenja. Izvodi se nakon svih metoda testnog slučaja i @Nakon primjedbe su izvršene.
- Korisno je za zaustavljanjeping poslužitelje i zatvaranje komunikacijskih veza.
- To se može učiniti pomoću @Nakon nastave komentarima.
@AfterClass public static void Method_Name() { // class cleanup code here }
JUnit Kompleti za testiranje
S postavljenim instalacijama, povezane testne klase obično se grupiraju i pokreću zajedno.
Ako želimo izvršiti više testova određenim redoslijedom, to se može učiniti kombiniranjem svih testova na jednom mjestu. To mjesto se naziva skup testova. Više detalja o tome kako izvršiti skupove testova i kako se koriste u JUnit obuhvaćeni su ovim udžbenik.
JUnit Testni trkač
JUnit pruža alat za izvođenje vaših testnih slučajeva.
- JUnitsrž klasa se koristi za izvođenje ovih testova.
- Metoda tzv runClasses osigurava org.junit.runner.JUnitsrž koristi se za izvođenje jedne ili više ispitnih klasa.
- Vrsta povrata ove metode je Proizlaziti objekt (org.junit.runner.Result), koji se koristi za pristup informacijama o testovima. Za više informacija pogledajte sljedeći primjer koda.
public class Test { public static void main(String[] args) { Result result = JUnitCore.runClasses(CreateAndSetName.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
U gornjem kodu objekt "rezultat" se obrađuje kako bi se dobili neuspješni i uspješni ishodi testnih slučajeva koje izvršavamo. Pomoćni elementi kao što su assertEquals podići te neuspjehe, dok @Zanemariti preskače test.
JUnit Napomena iz 5.: JUnitsrž je JUnit 4 trkača. JUnit 5 ga zamjenjuje s JUnit Platforma uređaj za lansiranje API, koji obično pokreće IDE, Gradle ili Maven Surefire.
Ime JUnit program
Dobro poznavanje SDLC-a, Java programiranje i osnove testiranje softvera proces pomaže u razumijevanju JUnit program, kao i znanje kako jedinični testovi razlikuju se od integracijskih testova.
Razumijemo jedinično testiranje koristeći praktičan primjer. Moramo stvoriti testnu klasu s testnom metodom označenom s @Test kako je navedeno u nastavku:
MyFirstClassTest.java
package guru99.JUnit; import static org.junit.Assert.*; import org.junit.Test; public class MyFirstClassTest { @Test public void myFirstMethod(){ String str= "JUnit is working fine"; assertEquals("JUnit is working fine",str); } }
TestRunner.java
Za izvršavanje naše testne metode (gore), moramo stvoriti pokretač testova. U pokretaču testova moramo dodati klasu testiranja kao parametar u JUnitCoreova metoda runClasses(). Vratit će rezultat testa, na temelju toga je li test prošao ili nije.
Za više detalja o ovome pogledajte kod u nastavku:
package guru99.JUnit; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(MyFirstClassTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
Izlaz
Jednom TestRunner.java izvršava naše metode testiranja, dobivamo izlaz kao neuspješan ili uspješan. U nastavku možete pronaći objašnjenje izlaza:
- U ovom primjeru, nakon izvršenja MyFirstClassTest.java, test je prošao i rezultat je zelene boje.
- Da nije uspjelo, rezultat bi bio prikazan crvenom bojom, a kvar se može vidjeti u kvaru. trace. Vidi JUnit Grafičko korisničko sučelje u nastavku:


