JUnit Test Cases @Before @BeforeClass Annotation

Indholdsfortegnelse:

Anonim

JUnit er den mest populære enhedstestramme i Java. Det anbefales eksplicit til enhedstest. JUnit kræver ikke server til test af webapplikation, hvilket gør testprocessen hurtig.

JUnit framework tillader også hurtig og nem generering af testsager og testdata. Den org.Junit pakke består af mange grænseflader og klasser for JUnit Testing såsom Test, Assert, Efter, før osv

Hvad er testarmatur

Før vi forstår, hvad en testarmatur er, lad os studere koden nedenfor

Denne kode er designet til at udføre to testsager på en simpel fil.

offentlig klasse OutputFileTest {privat fil output;output = ny fil (…);output.delete ();public void testFile1 () {// Kode til bekræftelse af testsag 1}output.delete ();output = ny fil (…);public void testFile2 () {// Kode til bekræftelse af testsag 2}output.delete ();}

Få problemer her

  • Koden kan ikke læses
  • Koden er ikke let at vedligeholde.
  • Når testpakken er kompleks, kan koden indeholde logiske problemer.

Sammenlign den samme kode ved hjælp af JUnit

offentlig klasse OutputFileTest{privat fil output;@Før offentligt ugyldigt createOutputFile (){output = ny fil (…);}@Efter offentlig ugyldighed deleteOutputFile (){output.delete ();}@Test offentlig ugyldig testFile1 (){// kode til test case mål}@Test offentlig ugyldig testFile2 (){// kode til test case mål}}

Koden langt mere læsbar og vedligeholdelig. Ovenstående kodestruktur er en testarmatur.

En testarmatur er en kontekst, hvor en testkasse kører. Testarmaturer inkluderer typisk:

  • Objekter eller ressourcer, der er tilgængelige i ethvert testsag.
  • Aktiviteter, der kræves, der gør disse objekter / ressourcer tilgængelige.
  • Disse aktiviteter er
    1. fordeling ( opsætning )
    2. de-allokering ( nedrivning ).

Opsætning og nedrivning

  • Normalt er der nogle gentagne opgaver, der skal udføres inden hver testtilfælde. Eksempel: Opret en databaseforbindelse.
  • Ligeledes i slutningen af ​​hver testtilfælde kan der være nogle gentagne opgaver. Eksempel: at rydde op, når testudførelsen er slut.
  • JUnit leverer kommentarer, der hjælper med opsætning og nedrivning. Det sikrer, at ressourcerne frigøres, og testsystemet er i klar tilstand til næste testsag.

Disse bemærkninger diskuteres nedenfor -

Opsætning

@Før annotering bruges på en metode, der indeholder Java-kode, der skal køres før hver testtilfælde. dvs. det kører før hver testudførelse.

Nedrivning (uanset dom)

@Efter annotation bruges på en metode, der indeholder java-kode til at køre efter hver testtilfælde. Disse metoder kører, selvom der undgås undtagelser i testsagen eller i tilfælde af påstandssvigt.

Bemærk:

  • Det er tilladt at have et hvilket som helst antal kommentarer, der er anført ovenfor.
  • Alle de metoder, der er kommenteret med @Before , kører før hver testtilfælde, men de kan køre i en hvilken som helst rækkefølge.
  • Du kan arve @Before og @ After metoder fra en superklasse, Execution er som følger: Det er en standardudførelsesproces i JUnit.
  1. Udfør @Before-metoderne i superklassen
  2. Udfør @Before-metoderne i denne klasse
  3. Udfør en @Test-metode i denne klasse
  4. Udfør metoderne @After i denne klasse
  5. Udfør metoderne @After i superklassen

Eksempel: Oprettelse af en klasse med fil som testarmatur

offentlig klasse OutputFileTest{privat fil output;@Før offentligt ugyldigt createOutputFile (){output = ny fil (…);}@Efter offentlig ugyldighed deleteOutputFile (){output.delete ();}@Test offentlig ugyldig testFile1 (){// kode til test case mål}@Test offentlig ugyldig testFile2 (){// kode til test case mål}}

I ovenstående eksempel vil udførelseskæden være som følger-

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

Antagelse: testFile1 () kører før testFile2 () - hvilket ikke er garanteret.

Engangsopsætning

  • Det er muligt at køre en metode kun én gang for hele testklassen, før nogen af ​​testene udføres, og før en eller flere @Before- metoder.
  • "En gang kun opsætning" er nyttige til start af servere, åbning af kommunikation osv. Det er tidskrævende at lukke og genåbne ressourcer til hver test.
  • Dette kan gøres ved hjælp af @BeforeClass- kommentaren
@BeforeClass offentlig statisk ugyldighed Method_Name () {// klasse opsætningskode her}

Engangsrivning

  • På samme måde som en gang kun opsætning er der også en engangsoprydningsmetode tilgængelig. Det kører, efter at alle testsagsmetoder og @ Efter annoteringer er blevet udført.
  • Det er nyttigt til at stoppe servere, lukke kommunikationslinks osv.
  • Dette kan gøres ved hjælp af @AfterClass- kommentaren
@AfterClass offentlig statisk ugyldig Method_Name (){// klasseoprydningskode her}

JUnit Test Suites

Hvis vi ønsker at udføre flere tests i en bestemt rækkefølge, kan det gøres ved at kombinere alle testene ét sted. Dette sted kaldes som testpakker. Flere detaljer om, hvordan du udfører testpakker, og hvordan det bruges i JUnit, vil blive dækket i denne vejledning.

Junit Test Runner

JUnit giver et værktøj til udførelse af dine testsager.

  • JUnitCore- klassen bruges til at udføre disse tests.
  • En metode kaldet runClasses leveret af org.junit.runner.JUnitCore bruges til at køre en eller flere testklasser .
  • Returtype for denne metode er resultatobjektet ( org.junit.runner.Result ), som bruges til at få adgang til oplysninger om testene. Se følgende kodeeksempel for mere klarhed.
offentlig klassetest {public static void main (String [] args) {Resultat resultat = JUnitCore.runClasses (CreateAndSetName.class);for (Failure failure: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println (result.wasSuccessful ());}}

I ovenstående kode behandles "resultat" objekt for at få fejl og vellykkede resultater af testsager, vi udfører.

Første JUnit-program

Rimelig viden om SDLC, java-programmering og grundlæggende i softwaretestprocessen hjælper med at forstå JUnit-programmet.

Lad os forstå enhedstest ved hjælp af et live eksempel. Vi er nødt til at oprette en testklasse med en testmetode, der er kommenteret med @Test som angivet nedenfor:

MyFirstClassTest.java

pakke guru99.JUnit;importer statisk org.JUnit.Assert. *;import org.JUnit.Test;offentlig klasse MyFirstClassTest {@Prøveoffentlig ugyldighed myFirstMethod () {String str = "JUnit fungerer fint";assertEquals ("JUnit fungerer fint", str);}}

TestRunner.java

For at udføre vores testmetode (ovenfor) skal vi oprette en testløber. I testkøreren skal vi tilføje testklasse som en parameter i JUnitCores runclasses () -metode. Det returnerer testresultatet baseret på, om testen er bestået eller mislykkedes.

For flere detaljer om dette, se koden nedenfor:

pakke guru99.JUnit;import org.JUnit.runner.JUnitCore;import org.JUnit.runner.Result;import org.JUnit.runner.notification.Failure;offentlig klasse TestRunner {public static void main (String [] args) {Resultat resultat = JUnitCore.runClasses (MyFirstClassTest.class);for (Failure failure: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Resultat ==" + result.wasSuccessful ());}}

Produktion

Når TestRunner.java udfører vores testmetoder, får vi output som mislykket eller bestået. Se nedenstående output forklaring:

  1. I dette eksempel bestås testen efter udførelse af MyFirstClassTest.java , og resultatet er grønt.
  2. Hvis det ville have fejlet, skulle det have vist resultatet som rødt, og fejl kan observeres i fejlspor. Se nedenfor JUnit gui:

Resume :

  • JUnit er en ramme, der understøtter flere annoteringer for at identificere en metode, der indeholder en test.
  • JUnit giver en kommentar kaldet @Test, som fortæller JUnit at den offentlige ugyldighedsmetode, hvor den bruges, kan køre som en testcase.
  • En testarmatur er en sammenhæng, hvor en testcase kører
  • For at udføre flere tests i en bestemt rækkefølge kan det gøres ved at kombinere alle testene ét sted. Dette sted kaldes som testpakker.
  • JUnit giver et værktøj til udførelse af testene, hvor vi kan køre vores testsager kaldet Test Runner.