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.
  • It is useful for stopping servers, closing communication links, etc.
  • 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. If it would have failed it should have shown the result as Red and failure can be observed in failure trace. See below 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.

Foglald รถssze ezt a bejegyzรฉst a kรถvetkezล‘kรฉppen: