JUnit Tesztesetek @Before @BeforeClass Annotation
JUnit a legnépszerűbb egység Tesztelés keret be Java. Kifejezetten ajánlott Egység tesztelése. JUnit nem igényel szervert a webalkalmazás teszteléséhez, ami felgyorsítja a tesztelési folyamatot.
JUnit A keretrendszer lehetővé teszi a tesztesetek és tesztadatok gyors és egyszerű generálását is. A org.Junit csomag számos interfészből és osztályból áll JUnit Tesztelések, például Teszt, Assert, Utána, Előtte stb.
Mi az a tesztkészülék
Mielőtt megértenénk, mi az a tesztberendezés, 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 { 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(); }
Itt van néhány probléma
- A kód nem olvasható
- A kód karbantartása nem egyszerű.
- Ha a tesztcsomag összetett, a kód logikai problémákat tartalmazhat.
Hasonlítsa össze ugyanazt a kódot 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 } }
A kód sokkal olvashatóbb és karbantartható. A fenti kódstruktúra a Tesztberendezés.
A teszteszköz olyan környezet, ahol a JUnit Teszt eset fut. A tesztberendezések általában a következőket tartalmazzák:
- Olyan objektumok vagy erőforrások, amelyek bármely tesztesethez rendelkezésre állnak.
- Olyan tevékenységekre van szükség, amelyek elérhetővé teszik ezeket az objektumokat/erőforrásokat.
- Ezek a tevékenységek
- kiosztás (felépítés)
- kiosztás megszüntetése (teardown).
Beállítás és lebontás
- Általában minden teszteset előtt el kell végezni néhány ismételt feladatot. Példa: adatbázis-kapcsolat létrehozása.
- Hasonlóképpen, minden teszteset végén előfordulhat néhány ismétlődő feladat. Példa: a teszt végrehajtása után megtisztítani.
- JUnit megjegyzéseket tartalmaz, amelyek segítenek a beállításban és a lebontásban. Ez biztosítja, hogy az erőforrások felszabaduljanak, és a tesztrendszer készen álljon a következő tesztesetre.
Ezek JUnit az annotációkat alább tárgyaljuk -
felépítés
@Előtt megjegyzés be JUnit tartalmazó módszeren használják Java kódot minden teszteset előtt le kell futtatni. azaz minden tesztvégrehajtás előtt lefut.
Lebontás (az ítélettől függetlenül)
@Után az annotációt egy Java kódot tartalmazó metóduson használják, amely minden teszteset után fut. Ezek a metódusok akkor is futnak, ha a tesztesetben kivételek vannak, vagy az állítás sikertelensége esetén.
Jegyzet:
- A fent felsorolt megjegyzések száma tetszőleges.
- Az összes metódus, amely a következővel van ellátva @Előtt in JUnit minden teszteset előtt futnak, de bármilyen sorrendben futhatnak.
- A @Before és @After metódusokat örökölheti egy szuperosztályból, a végrehajtás a következő: Ez egy szabványos végrehajtási folyamat JUnit.
- Végezze el a JUnit @Before metódusok a szuperosztályban
- Hajtsa végre a @Before metódusokat ebben az osztályban
- Végezzen el egy @Test metódust ebben az osztályban
- Hajtsa végre az @After metódusokat ebben az osztályban
- Hajtsa végre a @After metódusokat a szuperosztályban
Példa: Osztály létrehozása teszteszközként fájllal
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 } }
A fenti példában a végrehajtási lánc a következő lesz:
- createOutputFile()
- tesztfájl1()
- deleteOutputFile()
- createOutputFile()
- tesztfájl2()
- deleteOutputFile()
Feltevés:
A testFile1() a testFile2() előtt fut – ami nem garantált.
Egyszeri beállítás
- Egy módszer csak egyszer futhat le a teljes tesztosztályban, mielőtt bármelyik tesztet végrehajtaná, és bármely @Előtt mód).
- Az „egyszeri beállítás” hasznos a szerverek indításához, a kommunikáció megnyitásához stb. Időigényes az erőforrások bezárása és újbóli megnyitása minden teszthez.
- Ezt a megjegyzés segítségével lehet megtenni @Óra előtt in JUnit.
@BeforeClass public static void Method_Name() { // class setup code here }
Csak egyszer bontsa le
- Az egyszeri beállításhoz hasonlóan egy egyszeri tisztítási módszer is rendelkezésre áll. Minden teszteset módszer után fut és @Után a megjegyzések végrehajtásra kerültek.
- Hasznos szerverek leállítására, kommunikációs kapcsolatok bezárására stb.
- Ezt a @Óra után kommentár
@AfterClass public static void Method_Name() { // class cleanup code here }
JUnit Teszt lakosztályok
Ha több tesztet szeretnénk végrehajtani meghatározott sorrendben, akkor azt úgy is megtehetjük, hogy az összes tesztet egy helyen kombináljuk. Ezt a helyet tesztlakosztálynak hívják. További részletek a tesztcsomagok végrehajtásáról és felhasználásáról JUnit ebben lesz kitérve oktatói.
Junit tesztfutó
JUnit eszközt biztosít a tesztesetek végrehajtásához.
- JUnitMag osztályt használják ezeknek a teszteknek a végrehajtására.
- Az úgynevezett módszer runClasses által biztosított org.junit.runner.JUnitMag, egy vagy több tesztosztály futtatására szolgál.
- Ennek a módszernek a visszatérési típusa a Eredmény tárgy (org.junit.runner.Result), amely a tesztekkel kapcsolatos információk elérésére szolgál. Lásd a következő kódpéldát az érthetőség kedvéért.
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()); } }
A fenti kódban az „eredmény” objektumot dolgozzuk fel, hogy megkapjuk a végrehajtott tesztesetek hibáit és sikeres eredményeit.
vezetéknév JUnit program
Az SDLC, a java programozás és az alapismeretek megfelelő ismerete szoftver tesztelés folyamat segít megérteni JUnit program.
Ismerjük meg az egységtesztelést egy élő példa segítségével. Létre kell hoznunk egy tesztosztályt egy tesztmódszerrel @Teszt az alábbiak szerint:
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
A fenti tesztmódszerünk végrehajtásához létre kell hoznunk egy tesztfutót. A tesztfutóban paraméterként fel kell adnunk tesztosztályt JUnitA Core runclasses() metódusa . Visszaadja a teszt eredményét, attól függően, hogy a teszt sikeres vagy sikertelen.
További részletekért tekintse meg az alábbi kódot:
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()); } }
teljesítmény
Egyszer TestRunner.java végrehajtja a tesztmódszereinket, a kimenetet sikertelenként vagy sikeresként kapjuk meg. Az alábbi kimenet magyarázatát találja:
- Ebben a példában a végrehajtás után MyFirstClassTest.java , a teszt sikeres, és az eredmény zöld színű.
- Ha meghibásodott volna, az eredményt pirosként kellett volna megjelenítenie, és a hiba a hibanyomban figyelhető meg. Lásd alább JUnit gui :
Összegzésként
- JUnit egy olyan keretrendszer, amely számos megjegyzést támogat a tesztet tartalmazó módszer azonosításához.
- JUnit nevű annotációt biztosít @Teszt, amely megmondja a JUnit hogy a használt public void metódus tesztesetként futhat.
- A teszteszköz egy olyan környezet, ahol egy teszteset fut
- Ha egy meghatározott sorrendben több tesztet szeretne végrehajtani, akkor az összes tesztet egy helyen kombinálja. Ezt a helyet tesztlakosztálynak hívják.
- JUnit eszközt biztosít a tesztek végrehajtásához, ahol a Test Runner néven emlegetett teszteseteinket futtathatjuk.