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
    1. kiosztás (felépítés)
    2. 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.
  1. Végezze el a JUnit @Before metódusok a szuperosztályban
  2. Hajtsa végre a @Before metódusokat ebben az osztályban
  3. Végezzen el egy @Test metódust ebben az osztályban
  4. Hajtsa végre az @After metódusokat ebben az osztályban
  5. 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:

Beállítás és lebontás

  1. createOutputFile()
  2. tesztfájl1()
  3. deleteOutputFile()
  4. createOutputFile()
  5. tesztfájl2()
  6. 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:

  1. Ebben a példában a végrehajtás után MyFirstClassTest.java , a teszt sikeres, és az eredmény zöld színű.
  2. 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 :

JUnit program kimenet

Ö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.