A JUnit a Java legnépszerűbb tesztelő keretrendszere. Kifejezetten ajánlott az egység teszteléséhez. A JUnit nem igényel szervert a webalkalmazások teszteléséhez, ami gyorsabbá teszi a tesztelési folyamatot.
A JUnit keretrendszer lehetővé teszi a tesztesetek és tesztadatok gyors és egyszerű előállítását is. Az org.Junit csomag számos interfészből és osztályból áll a JUnit Testing számára, például Test, Assert, After, Before stb.
Mi az a tesztelvény
Mielőtt megértenénk, mi a tesztkészlet, tanulmányozzuk az alábbi kódot
Ez a kód két teszteset végrehajtására szolgál egy egyszerű fájlon.
public class OutputFileTest {privát File kimenet;output = new File (…);output.delete ();public void testFile1 () {// Kód az 1. teszteset ellenőrzéséhez}output.delete ();output = new File (…);public void testFile2 () {// Kód a 2. teszteset ellenőrzéséhez}output.delete ();}
Néhány kérdés itt
- A kód nem olvasható
- A kódot nem könnyű fenntartani.
- Ha a tesztkészlet összetett, a kód logikai problémákat tartalmazhat.
Hasonlítsa össze ugyanazt a kódot a JUnit használatával
public class OutputFileTest{privát File kimenet;@ Mielőtt nyilvános void createOutputFile (){output = new File (…);}@A nyilvános void után deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// kód a teszteset céljára}@Test public void testFile2 (){// kód a teszteset céljára}}
A kód sokkal olvashatóbb és karbantarthatóbb. A fenti kódszerkezet egy tesztelvény.
A tesztberendezés olyan kontextus, ahol a teszteset fut. A tesztberendezések általában a következőket tartalmazzák:
- Bármely tesztesethez rendelkezésre álló objektumok vagy erőforrások.
- Szükséges tevékenységek, amelyek elérhetővé teszik ezeket az objektumokat / erőforrásokat.
- Ezek a tevékenységek
- kiosztás ( beállítás )
- kiosztás ( lebontás ).
Beállítás és lebontás
- Általában néhány ismételt feladatot kell elvégezni minden teszteset előtt. Példa: hozzon létre egy adatbázis-kapcsolatot.
- Hasonlóképpen, az egyes tesztesetek végén előfordulhat, hogy megismételnek néhány feladatot. Példa: a teszt végrehajtásának befejezése után takarítani.
- A JUnit olyan kommentárokat kínál, amelyek segítenek a beállításban és a lebontásban. Biztosítja az erőforrások felszabadulását, és a tesztrendszer készen áll a következő tesztesetre.
Ezeket a jegyzeteket az alábbiakban tárgyaljuk
Beállít
A @Before feliratozást Java-kódot tartalmazó metóduson használják, amelyet minden teszteset előtt futtatnak. azaz minden teszt végrehajtása előtt fut.
Teardown (az ítélettől függetlenül)
@A kommentálást a java kódot tartalmazó módszeren használják az egyes tesztesetek után. Ezek a módszerek akkor is működni fognak, ha a tesztesetben vagy az állítás meghibásodása esetén kivételt hoznak.
Jegyzet:
- A fent felsorolt tetszőleges számú jelölés megengedett.
- A @Before- val kommentált összes módszer minden teszteset előtt fut, de tetszőleges sorrendben futhat.
- A @Before és @After metódusokat egy szuper osztályból örökölheti, az Execution a következő: Ez egy standard végrehajtási folyamat a JUnit-ben.
- Futtassa a @Before metódusokat a szuperosztályon
- Végezze el a @Before metódusokat ebben az osztályban
- Végezzen el egy @Test metódust ebben az osztályban
- Végezze el a @After metódusokat ebben az osztályban
- Végezze el a @After metódusokat a szuperosztályban
Példa: Osztály létrehozása fájlként mint tesztszerelvény
public class OutputFileTest{privát File kimenet;@ Mielőtt nyilvános void createOutputFile (){output = new File (…);}@A nyilvános void után deleteOutputFile (){output.delete ();}@Test public void testFile1 (){// kód a teszteset céljára}@Test public void testFile2 (){// kód a teszteset céljára}}
A fenti példában a végrehajtási lánc a következő lesz:
- createOutputFile ()
- testFile1 ()
- deleteOutputFile ()
- createOutputFile ()
- testFile2 ()
- deleteOutputFile ()
Feltételezés: A testFile1 () a testFile2 () előtt fut, ami nem garantált.
Egyszeri beállítás
- Csak egy módszer futtatható a teljes tesztosztályon a tesztek végrehajtása előtt, és bármely @Before módszer (ek) előtt.
- Az "egyszer csak beállítás" hasznos a szerverek indításához, a kommunikáció megnyitásához stb. Időigényes az egyes tesztek erőforrásainak bezárása és újranyitása.
- Ez a @BeforeClass kommentár segítségével történhet
@BeforeClass public static void Method_Name () {// class setup kód itt}
Egyszer csak lebontani
- A csak egyszeri beállításhoz hasonlóan elérhető az egyszeri tisztítási módszer is. Az összes teszteset-módszer és a @A kommentárok végrehajtása után fut .
- Hasznos a szerverek leállításához, a kommunikációs kapcsolatok bezárásához stb.
- Ez a @AfterClass kommentár segítségével történhet
@AfterClass public static void Method_Name (){// class cleanup kód itt}
JUnit Test Suites
Ha több tesztet akarunk végrehajtani meghatározott sorrendben, akkor úgy tehetjük meg, hogy az összes tesztet egy helyen egyesítjük. Ezt a helyet nevezzük tesztcsomagoknak. A tesztkészletek végrehajtásáról és a JUnit-ben történő használatáról további részleteket ez az oktatóanyag tartalmaz.
Junit Test Runner
A JUnit egy eszközt nyújt a tesztesetek végrehajtásához.
- A JUnitCore osztályt használják ezeknek a teszteknek a végrehajtására.
- Az org.junit.runner.JUnitCore által biztosított runClasses nevű módszer egy vagy több tesztosztály futtatására szolgál.
- A módszer visszatérési típusa az Eredmény objektum ( org.junit.runner.Result ), amely a tesztekkel kapcsolatos információk elérésére szolgál. Az egyértelműség érdekében lásd a következő kódpéldát.
nyilvános osztály teszt {public static void main (String [] érvel) {Eredmény eredménye = JUnitCore.runClasses (CreateAndSetName.class);for (Hiba hiba: result.getFailures ()) {System.out.println (fail.String ());}System.out.println (result.wasSuccessful ());}}
A fenti kódban az "eredmény" objektumot feldolgozzuk, hogy megkapjuk a végrehajtott tesztesetek hibáit és sikeres eredményeit.
Első JUnit program
Az SDLC, a java programozás és a szoftver tesztelési folyamatok alapos ismerete segít megérteni a JUnit programot.
Értsük meg az egység tesztelését élő példával. Létre kell hoznunk egy tesztosztályt egy tesztmódszerrel , amelyet a @Test jelöléssel jelölünk az alábbiak szerint:
MyFirstClassTest.java
csomag guru99.JUnit;statikus org.JUnit.Assert. * importálása;import org.JUnit.Test;nyilvános osztály MyFirstClassTest {@Tesztpublic void myFirstMethod () {String str = "A JUnit jól működik";assertEquals ("A JUnit jól működik", str);}}
TestRunner.java
A fenti vizsgálati módszerünk végrehajtásához létre kell hoznunk egy tesztfutót. A tesztfutóban hozzá kell adnunk a tesztosztályt paraméterként a JUnitCore runclasses () módszerébe. Visszaadja a teszt eredményét, annak alapján, hogy a teszt sikeres volt-e vagy sem.
További részletekért lásd az alábbi kódot:
csomag guru99.JUnit;import org.JUnit.runner.JUnitCore;import org.JUnit.runner.Result;import org.JUnit.runner.notification.Failure;nyilvános osztály TestRunner {public static void main (String [] érvel) {Eredmény eredménye = JUnitCore.runClasses (MyFirstClassTest.class);for (Hiba hiba: result.getFailures ()) {System.out.println (fail.String ());}System.out.println ("Result ==" + result.wasSuccessful ());}}
Kimenet
Miután a TestRunner.java végrehajtotta a tesztelési módszereinket, a kimenetet sikertelennek vagy sikeresnek tekintjük. Az alábbiakban találja a kimenet magyarázatát:
- Ebben a példában a MyFirstClassTest.java végrehajtása után a teszt sikeres , és az eredmény zöld színnel jelenik meg.
- Ha nem sikerült, akkor meg kellett volna mutatnia az eredményt, mivel a piros és a hiba a hiba nyomában figyelhető meg. Lásd alább JUnit gui:
Összegzés :
- A JUnit egy keretrendszer, amely számos megjegyzéssel támogatja a tesztet tartalmazó módszer azonosítását.
- A JUnit egy @Test nevű kommentárral szolgál, amely elmondja a JUnitnek, hogy a public void módszer, amelyben alkalmazzák, tesztesetként futtatható.
- A tesztberendezés olyan kontextus, ahol egy teszteset fut
- Több teszt végrehajtása meghatározott sorrendben megtehető úgy, hogy az összes tesztet egy helyen egyesíti. Ezt a helyet nevezzük tesztcsomagoknak.
- A JUnit egy eszközt biztosít a tesztek végrehajtására, ahol futtathatjuk a Test Runner néven ismert teszteseteinket.