JUnit Testfall @Before @BeforeClass Annotation

JUnit รคr den mest populรคra enheten Testning ram i Java. Det rekommenderas uttryckligen fรถr Enhetstestning. JUnit krรคver ingen server fรถr att testa webbapplikation, vilket gรถr testprocessen snabb.

JUnit ramverket tillรฅter ocksรฅ snabb och enkel generering av testfall och testdata. De org.Junit paketet bestรฅr av mรฅnga grรคnssnitt och klasser fรถr JUnit Tester som Test, Assert, After, Before, etc.

Vad รคr testfixtur

Innan vi fรถrstรฅr vad en testfixtur รคr, lรฅt oss studera koden nedan

Denna kod รคr utformad fรถr att exekvera tvรฅ testfall 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(); 
}

Lite frรฅgor hรคr

  • Koden รคr inte lรคsbar
  • Koden รคr inte lรคtt att underhรฅlla.
  • Nรคr testsviten รคr komplex kan koden innehรฅlla logiska problem.

Jรคmfรถr samma kod 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 รคr mycket mer lรคsbar och underhรฅllbar. Ovanstรฅende kodstruktur รคr en Testfixtur.

En testfixtur รคr ett sammanhang dรคr en JUnit Testfall springer. Typiskt inkluderar testfixturer:

  • Objekt eller resurser som รคr tillgรคngliga fรถr alla testfall.
  • Aktiviteter som krรคvs som gรถr dessa objekt/resurser tillgรคngliga.
  • Dessa aktiviteter รคr
    1. tilldelning (instรคllning)
    2. avfรถrdelning (riva ner).

Setup och Teardown

  • Vanligtvis finns det nรฅgra upprepade uppgifter som mรฅste gรถras fรถre varje testfall. Exempel: skapa en databasanslutning.
  • Pรฅ samma sรคtt kan det finnas nรฅgra upprepade uppgifter i slutet av varje testfall. Exempel: att stรคda upp nรคr testkรถrningen รคr รถver.
  • JUnit ger anteckningar som hjรคlper till vid installation och rivning. Det sรคkerstรคller att resurser frigรถrs och att testsystemet รคr redo fรถr nรคsta testfall.

Dessa JUnit anteckningar diskuteras nedan-

Instรคllning

@Innan anteckning i JUnit anvรคnds pรฅ en metod som innehรฅller Java kod som ska kรถras fรถre varje testfall. dvs den kรถrs fรถre varje testkรถrning.

Nedbrytning (oavsett domen)

@Efter anteckning anvรคnds pรฅ en metod som innehรฅller java-kod fรถr att kรถras efter varje testfall. Dessa metoder kommer att kรถras รคven om nรฅgra undantag gรถrs i testfallet eller i fallet med pรฅstรฅendemisslyckanden.

Obs:

  • Det รคr tillรฅtet att ha valfritt antal anteckningar listade ovan.
  • Alla metoder kommenterade med @Innan in JUnit kommer att kรถras fรถre varje testfall, men de kan kรถras i valfri ordning.
  • Du kan รคrva @Before och @After metoder frรฅn en superklass, Execution รคr som fรถljer: Det รคr en standardexekveringsprocess i JUnit.
  1. Kรถr JUnit @Before-metoder i superklassen
  2. Kรถr @Before-metoderna i den hรคr klassen
  3. Kรถr en @Test-metod i den hรคr klassen
  4. Kรถr @After-metoderna i den hรคr klassen
  5. Kรถr @After-metoderna i superklassen

Exempel: Skapa en klass med fil som testfixtur

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 exemplet ovan kommer utfรถrandekedjan att vara fรถljande-

Setup och Teardown

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

Antagande:

testFile1() kรถrs fรถre testFile2()โ€“ vilket inte รคr garanterat.

Instรคllning endast en gรฅng

  • Det รคr mรถjligt att kรถra en metod endast en gรฅng fรถr hela testklassen innan nรฅgot av testerna exekveras, och fรถre ev. @Innan metod(er).
  • "Once only setup" รคr anvรคndbara fรถr att starta servrar, รถppna kommunikation, etc. Det รคr tidskrรคvande att stรคnga och รฅterรถppna resurser fรถr varje test.
  • Detta kan gรถras med hjรคlp av anteckningen @Innan lektionen in JUnit.
@BeforeClass public static void Method_Name() {	
    // class setup code here	
 }	

Riv bara en gรฅng

  • I likhet med engรฅngsinstallation finns รคven en engรฅngsrensningsmetod tillgรคnglig. Den kรถrs efter alla testfallsmetoder och @Efter anteckningar har utfรถrts.
  • Det รคr anvรคndbart fรถr att stoppaping servrar, stรคngning av kommunikationslรคnkar etc.
  • Detta kan gรถras med hjรคlp av @Efter lektionen anteckning
 @AfterClass public static void Method_Name()	
 {	
    // class cleanup code here	
 }	

JUnit Testsviter

Om vi โ€‹โ€‹vill utfรถra flera tester i en angiven ordning kan det gรถras genom att kombinera alla tester pรฅ ett stรคlle. Denna plats kallas som testsviterna. Mer information om hur man kรถr testsviter och hur det anvรคnds i JUnit kommer att omfattas av detta handledning.

Junit Test Runner

JUnit tillhandahรฅller ett verktyg fรถr att utfรถra dina testfall.

  • JUnitKรคrna klass anvรคnds fรถr att utfรถra dessa tester.
  • En metod som kallas kรถrklasser tillhandahรฅlls av org.junit.runner.JUnitKรคrna, anvรคnds fรถr att kรถra en eller flera testklasser.
  • Returtyp fรถr denna metod รคr Resultat objekt (org.junit.runner.Result), som anvรคnds fรถr att fรฅ tillgรฅng till information om testerna. Se fรถljande kodexempel fรถr 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 ovanstรฅende kod bearbetas "resultat"-objektet fรถr att fรฅ misslyckanden och framgรฅngsrika resultat av testfall vi kรถr.

Fรถrnamn JUnit program

God kunskap om SDLC, java-programmering och grunderna i mjukvarutestning processen hjรคlper till att fรถrstรฅ JUnit programmet.

Lรฅt oss fรถrstรฅ enhetstestning med hjรคlp av ett levande exempel. Vi mรฅste skapa en testklass med en testmetod kommenterad med @Testa enligt nedan:

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

Fรถr att utfรถra vรฅr testmetod (ovan) mรฅste vi skapa en testlรถpare. I testlรถparen mรฅste vi lรคgga till testklass som en parameter i JUnitCores runclasses()-metod . Det kommer att returnera testresultatet, baserat pรฅ om testet รคr godkรคnt eller underkรคnt.

Fรถr mer information om detta, se koden nedan:

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

Produktion

Nรคr TestRunner.java exekverar vรฅra testmetoder fรฅr vi utdata som misslyckade eller godkรคnda. Vรคnligen se utdatafรถrklaringen nedan:

  1. I det hรคr exemplet, efter exekvering MyFirstClassTest.java , testet รคr godkรคnt och resultatet รคr grรถnt.
  2. Om det skulle ha misslyckats borde det ha visat resultatet som rรถtt och ett fel kan observeras vid fel. trace. Se nedan JUnit gui:

JUnit programutgรฅng

Sammanfattning

  • JUnit รคr ett ramverk som stรถder flera kommentarer fรถr att identifiera en metod som innehรฅller ett test.
  • JUnit ger en anteckning som kallas @Testa, som berรคttar fรถr JUnit att den offentliga void-metoden som den anvรคnds i kan kรถras som ett testfall.
  • En testfixtur รคr ett sammanhang dรคr ett testfall kรถrs
  • Fรถr att utfรถra flera tester i en angiven ordning kan det gรถras genom att kombinera alla tester pรฅ ett stรคlle. Denna plats kallas som testsviterna.
  • JUnit tillhandahรฅller ett verktyg fรถr exekvering av testerna dรคr vi kan kรถra vรฅra testfall som kallas Test Runner.

Sammanfatta detta inlรคgg med: