JUnit Testtilfeller @Before @BeforeClass-kommentar

JUnit er den mest populære enheten Testing rammeverk i Java. Det anbefales eksplisitt for Enhetstesting. JUnit krever ikke server for testing av webapplikasjon, noe som gjør testprosessen rask.

JUnit rammeverket tillater også rask og enkel generering av testtilfeller og testdata. De org.Junit pakken består av mange grensesnitt og klasser for JUnit Testing som Test, Assert, After, Before, etc.

Hva er testarmatur

Før vi forstår hva en testarmatur er, la oss studere koden nedenfor

Denne koden er designet for å utføre to testtilfeller på en enkel fil.

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(); 
}

Noen problemer her

  • Koden er ikke lesbar
  • Koden er ikke lett å vedlikeholde.
  • Når testpakken er kompleks, kan koden inneholde logiske problemer.

Sammenlign den samme koden med 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
    }
}

Koden er langt mer lesbar og vedlikeholdbar. Kodestrukturen ovenfor er en Testarmatur.

Et testarmatur er en kontekst der en JUnit Testsak løper. Vanligvis inkluderer testarmaturer:

  • Objekter eller ressurser som er tilgjengelige for alle testtilfeller.
  • Aktiviteter som kreves som gjør disse objektene/ressursene tilgjengelige.
  • Disse aktivitetene er
    1. tildeling (oppsett)
    2. de-allokering (rive ned).

Oppsett og nedbygging

  • Vanligvis er det noen gjentatte oppgaver som må gjøres før hver testcase. Eksempel: opprette en databaseforbindelse.
  • På samme måte kan det være noen gjentatte oppgaver på slutten av hver testsak. Eksempel: å rydde opp når testkjøringen er over.
  • JUnit gir merknader som hjelper med oppsett og nedbygging. Det sikrer at ressurser frigjøres, og testsystemet er i klar tilstand for neste testcase.

Disse JUnit merknader er diskutert nedenfor-

Oppsett

@Før merknad i JUnit brukes på en metode som inneholder Java kode som skal kjøres før hvert testtilfelle. dvs. den kjører før hver testkjøring.

Nedbrytning (uavhengig av dommen)

@Etter merknad brukes på en metode som inneholder java-kode som skal kjøres etter hvert testtilfelle. Disse metodene vil kjøre selv om noen unntak blir kastet i testsaken eller i tilfelle påstandsfeil.

OBS:

  • Det er tillatt å ha et hvilket som helst antall merknader oppført ovenfor.
  • Alle metodene annotert med @Før in JUnit vil kjøre før hver testcase, men de kan kjøre i hvilken som helst rekkefølge.
  • Du kan arve metodene @Before og @After fra en superklasse, utførelse er som følger: Det er en standard utførelsesprosess i JUnit.
  1. Utfør JUnit @Før-metoder i superklassen
  2. Kjør @Before-metodene i denne klassen
  3. Kjør en @Test-metode i denne klassen
  4. Kjør @After-metodene i denne klassen
  5. Kjør @After-metodene i superklassen

Eksempel: Opprette en klasse med fil som testarmatur

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
    }
}

I eksemplet ovenfor vil utførelseskjeden være som følger-

Oppsett og nedbygging

  1. createOutputFile()
  2. testfil1()
  3. deleteOutputFile()
  4. createOutputFile()
  5. testfil2()
  6. deleteOutputFile()

Antagelse:

testFile1() kjører før testFile2()– som ikke er garantert.

Oppsett kun én gang

  • Det er mulig å kjøre en metode kun én gang for hele testklassen før noen av testene utføres, og før evt. @Før metode (r).
  • "Once only setup" er nyttige for å starte servere, åpne kommunikasjon osv. Det er tidkrevende å lukke og åpne ressurser på nytt for hver test.
  • Dette kan gjøres ved å bruke merknaden @BeforeClass in JUnit.
@BeforeClass public static void Method_Name() {	
    // class setup code here	
 }	

Rive ned én gang

  • I likhet med oppsett kun én gang , er en engangsoppryddingsmetode også tilgjengelig. Den kjører etter alle testcase metoder og @Etter merknader er utført.
  • Det er nyttig for å stoppe servere, lukke kommunikasjonskoblinger osv.
  • Dette kan gjøres ved hjelp av @Etter timen merknad
 @AfterClass public static void Method_Name()	
 {	
    // class cleanup code here	
 }	

JUnit Test suiter

Hvis vi ønsker å utføre flere tester i en spesifisert rekkefølge, kan det gjøres ved å kombinere alle testene på ett sted. Dette stedet kalles som testsuitene. Flere detaljer om hvordan du utfører testsuiter og hvordan den brukes i JUnit vil bli dekket i dette tutorial.

Junit Test Runner

JUnit gir et verktøy for gjennomføring av testsakene dine.

  • JUnitKjerne klasse brukes til å utføre disse testene.
  • En metode som heter runClasses levert av org.junit.runner.JUnitKjerne, brukes til å kjøre en eller flere testklasser.
  • Returtypen for denne metoden er Resultat objekt (org.junit.runner.Result), som brukes for å få tilgang til informasjon om testene. Se følgende kodeeksempel for mer klarhet.
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());					
   }		
}      

I koden ovenfor behandles "resultat"-objektet for å få feil og vellykkede utfall av testtilfeller vi utfører.

Først JUnit program

God kunnskap om SDLC, java-programmering og grunnleggende om programvaretesting prosessen hjelper med å forstå JUnit program.

La oss forstå enhetstesting ved å bruke et levende eksempel. Vi må lage en testklasse med en testmetode merket med @Test som gitt nedenfor:

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

For å utføre testmetoden vår (over), må vi lage en testløper. I testløperen må vi legge til testklasse som parameter i JUnitCores runclasses()-metode . Den vil returnere testresultatet, basert på om testen er bestått eller ikke bestått.

For mer informasjon om dette, se koden nedenfor:

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());							
   }		
}      	

Produksjon

Gang TestRunner.java utfører testmetodene våre får vi utdata som mislykket eller bestått. Vennligst finn utdataforklaringen nedenfor:

  1. I dette eksemplet, etter utførelse MyFirstClassTest.java , testen er bestått og resultatet er i grønt.
  2. Hvis det ville ha feilet, burde det ha vist resultatet som rødt, og feil kan observeres i feilsporing. Se nedenfor JUnit gui:

JUnit programutgang

Sammendrag

  • JUnit er et rammeverk som støtter flere merknader for å identifisere en metode som inneholder en test.
  • JUnit gir en merknad kalt @Test, som forteller JUnit at den offentlige void-metoden den brukes i kan kjøres som en testsak.
  • En testarmatur er en kontekst der en testcase kjører
  • For å utføre flere tester i en spesifisert rekkefølge, kan det gjøres ved å kombinere alle testene på ett sted. Dette stedet kalles som testsuitene.
  • JUnit gir et verktøy for utførelse av testene der vi kan kjøre testcasene våre kalt Test Runner.