JUnit-testfall @Before @BeforeClass Annotation

Innehållsförteckning:

Anonim

JUnit är det mest populära enhetstestningsramverket i Java. Det rekommenderas uttryckligen för enhetstestning. JUnit kräver ingen server för att testa webbapplikationen, vilket gör testprocessen snabb.

JUnit-ramverket tillåter också snabb och enkel generering av testfall och testdata. Den org.Junit paket består av många gränssnitt och klasser för JUnit Testing såsom Test, Assert, Sent, Före, etc.

Vad är Test fixtur

Innan vi förstår vad en testarmatur är, låt oss studera koden nedan

Den här koden är utformad för att utföra två testfall på en enkel fil.

offentlig klass OutputFileTest {privat filutdata;output = new File (…);output.delete ();public void testFile1 () {// Kod för att verifiera testfall 1}output.delete ();output = new File (…);public void testFile2 () {// Kod för att verifiera testfall 2}output.delete ();}

Få frågor här

  • Koden är inte läsbar
  • Koden är inte lätt att underhålla.
  • När testpaketet är komplext kan koden innehålla logiska problem.

Jämför samma kod med JUnit

offentlig klass OutputFileTest{privat filutdata;@ Innan offentligt ogiltigt createOutputFile (){output = new File (…);}@Efter offentligt ogiltigt deleteOutputFile (){output.delete ();}@Test offentligt ogiltigt testFile1 (){// kod för testfallets mål}@Test offentligt ogiltigt testFile2 (){// kod för testfallets mål}}

Koden är mycket mer läsbar och underhållbar. Ovanstående kodstruktur är en test fixtur.

En testarmatur är ett sammanhang där ett testfall körs. Testarmaturer inkluderar vanligtvis:

  • 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. fördelning ( inställning )
    2. avfördelning ( nedbrytning ).

Installation och nedbrytning

  • Vanligtvis finns det några upprepade uppgifter som måste utföras före varje testfall. Exempel: skapa en databasanslutning.
  • På samma sätt kan det i slutet av varje testfall finnas några upprepade uppgifter. Exempel: att städa när testkörningen är över.
  • JUnit tillhandahåller anteckningar som hjälper till med installation och nedbrytning. Det säkerställer att resurser frigörs och testsystemet är i ett klart läge för nästa testfall.

Dessa anteckningar diskuteras nedan-

Uppstart

@Before- anteckningen används på en metod som innehåller Java-kod för att köras före varje testfall. dvs. det körs före varje testkörning.

Nedbrytning (oavsett dom)

@Efter annotering används på en metod som innehåller javakod för att köras efter varje testfall. Dessa metoder kommer att köras även om några undantag kastas i testfallet eller vid påståendefel.

Notera:

  • Det är tillåtet att ha valfritt antal anteckningar som anges ovan.
  • Alla metoder som antecknats med @Before 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, Exekveringen är som följer: Det är en standardkörningsprocess i JUnit.
  1. Kör metoderna @Before i superklassen
  2. Kör metoderna @Before i den här klassen
  3. Kör en @Test-metod i den här klassen
  4. Kör metoderna @After i den här klassen
  5. Kör metoderna @After i superklassen

Exempel: Skapa en klass med fil som test fixtur

offentlig klass OutputFileTest{privat filutdata;@ Innan offentligt ogiltigt createOutputFile (){output = new File (…);}@Efter offentligt ogiltigt deleteOutputFile (){output.delete ();}@Test offentligt ogiltigt testFile1 (){// kod för testfallets mål}@Test offentligt ogiltigt testFile2 (){// kod för testfallets mål}}

I exemplet ovan kommer utförandekedjan att vara följande:

  1. createOutputFile ()
  2. testFile1 ()
  3. deleteOutputFile ()
  4. createOutputFile ()
  5. testFile2 ()
  6. deleteOutputFile ()

Antagande: testFile1 () körs före testFile2 () - vilket inte garanteras.

Enstaka installation

  • Det är möjligt att köra en metod bara en gång för hela testklassen innan någon av testerna utförs, och före en eller flera @Before- metoder.
  • "En gång bara installation" är användbart för att starta servrar, öppna kommunikation etc. Det är tidskrävande att stänga och öppna resurser för varje test.
  • Detta kan göras med @BeforeClass- anteckningen
@BeforeClass offentligt statiskt ogiltigt Method_Name () {// klassinställningskod här}

En gång riva ner

  • På samma sätt som en enda gång är en rengöringsmetod en gång tillgänglig. Det körs efter alla testfallsmetoder och @Anmärkningar har utförts.
  • Det är användbart för att stoppa servrar, stänga kommunikationslänkar etc.
  • Detta kan göras med @AfterClass- anteckningen
@AfterClass public static void Method_Name (){// klassrensningskod här}

JUnit Test Suites

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 testsviter. Mer information om hur du kör testsviter och hur det används i JUnit kommer att beskrivas i denna handledning.

Junit Test Runner

JUnit tillhandahåller ett verktyg för utförande av dina testfall.

  • JUnitCore- klassen används för att utföra dessa tester.
  • En metod som kallas runClasses tillhandahålls av org.junit.runner.JUnitCore används för att köra en eller flera testklasser.
  • Returtyp för den här metoden är resultatobjektet ( org.junit.runner.Result ), som används för att komma åt information om testerna. Se följande kodexempel för mer tydlighet.
offentligt klassprov {public static void main (String [] args) {Resultatresultat = JUnitCore.runClasses (CreateAndSetName.class);för (Failure failure: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println (result.wasSuccessful ());}}

I ovanstående kod bearbetas "resultat" -objekt för att få fel och framgångsrika resultat av testfall som vi utför.

Första JUnit-programmet

Rättvis kunskap om SDLC, Java-programmering och grunderna i programvarutestningsprocessen hjälper till att förstå JUnit-programmet.

Låt oss förstå enhetstestning med ett liveexempel. Vi måste skapa en testklass med en testmetod som antecknats med @Test enligt nedan:

MyFirstClassTest.java

paket guru99.JUnit;importera statisk org.JUnit.Assert. *;importera org.JUnit.Test;offentlig klass MyFirstClassTest {@Testapublic void myFirstMethod () {String str = "JUnit fungerar bra";assertEquals ("JUnit fungerar bra", str);}}

TestRunner.java

För att utföra vår testmetod (ovan) måste vi skapa en testlöpare. I testköraren måste vi lägga till testklass som parameter i JUnitCores runclasses () -metod. Det returnerar testresultatet baserat på om testet är godkänt eller misslyckat.

För mer information om detta, se koden nedan:

paket guru99.JUnit;importera org.JUnit.runner.JUnitCore;importera org.JUnit.runner.Result;importera org.JUnit.runner.notification.Failure;offentlig klass TestRunner {public static void main (String [] args) {Resultatresultat = JUnitCore.runClasses (MyFirstClassTest.class);för (Failure failure: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Resultat ==" + result.wasSuccessful ());}}

Produktion

När TestRunner.java har kört våra testmetoder får vi utdata som misslyckade eller godkända. Se nedan utgångsförklaring:

  1. I det här exemplet skickas testet efter att MyFirstClassTest.java har körts och resultatet är grönt.
  2. Om det skulle ha misslyckats skulle det ha visat resultatet som rött och fel kan observeras i felspårning. Se nedan JUnit gui:

Sammanfattning :

  • JUnit är ett ramverk som stöder flera anteckningar för att identifiera en metod som innehåller ett test.
  • JUnit tillhandahåller en kommentar som heter @Test, som säger till JUnit att den offentliga ogiltiga metoden där den används kan köras som ett testfall.
  • En testarmatur ä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 testsviter.
  • JUnit tillhandahåller ett verktyg för utförande av tester där vi kan köra våra testfall som kallas Test Runner.