JUnit er det mest populære rammeverket for testing av enheter i Java. Det anbefales eksplisitt for enhetstesting. JUnit krever ikke server for å teste nettapplikasjoner, noe som gjør testprosessen rask.
JUnit framework gir også rask og enkel generering av testsaker og testdata. Den org.Junit Pakken består av mange grensesnitt og klasser for JUnit testing som Test, Assert, etter, før, etc.
Hva er Test fixture
Før vi forstår hva en testarmatur er, la oss studere koden nedenfor
Denne koden er designet for å utføre to testsaker på en enkel fil.
offentlig klasse OutputFileTest {privat filutgang;utgang = ny fil (…);output.delete ();public void testFile1 () {// Kode for å verifisere prøvesak 1}output.delete ();utgang = ny fil (…);public void testFile2 () {// Kode for å verifisere testsak 2}output.delete ();}
Få 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 ved hjelp av JUnit
offentlig klasse OutputFileTest{privat filutgang;@Før offentlig ugyldig createOutputFile (){utgang = ny fil (…);}@Etter offentlig ugyldig deleteOutputFile (){output.delete ();}@Test offentlig ugyldig testFile1 (){// kode for testsaksmål}@Test offentlig ugyldig testFile2 (){// kode for testsaksmål}}
Koden er mye mer lesbar og vedlikeholdbar. Ovennevnte kodestruktur er en testarmatur.
En testarmatur er en kontekst der en testsak kjører. Testutstyr inkluderer vanligvis:
- Objekter eller ressurser som er tilgjengelige for alle testtilfeller.
- Aktiviteter som kreves som gjør disse objektene / ressursene tilgjengelige.
- Disse aktivitetene er
- tildeling ( oppsett )
- avfordeling ( nedrivning ).
Oppsett og nedbrytning
- Vanligvis er det noen gjentatte oppgaver som må gjøres før hver testtilfelle. Eksempel: opprett en databaseforbindelse.
- På samme måte kan det være noen gjentatte oppgaver på slutten av hver testtilfelle. Eksempel: å rydde opp når testutførelsen er over.
- JUnit gir merknader som hjelper til med oppsett og nedbrytning. Det sikrer at ressursene frigjøres, og testsystemet er i klar tilstand for neste testsak.
Disse kommentarene blir diskutert nedenfor -
Oppsett
@Før merknad brukes på en metode som inneholder Java-kode som skal kjøres før hver testtilfelle. dvs. den kjører før hver testutførelse.
Teardown (uansett dom)
@ Etter merknad brukes på en metode som inneholder javakode for å kjøre etter hvert testtilfelle. Disse metodene vil kjøre selv om det blir kastet unntak i testsaken eller i tilfelle påstandssvikt.
Merk:
- Det er tillatt å ha et hvilket som helst antall kommentarer som er oppført ovenfor.
- Alle metodene som er merket med @Before vil kjøres før hver testtilfelle, men de kan kjøre i hvilken som helst rekkefølge.
- Du kan arve @Before og @ After metoder fra en superklasse, er Execution som følger: Det er en standard kjøringsprosess i JUnit.
- Utfør @Before-metodene i superklassen
- Utfør @Before-metodene i denne klassen
- Utfør en @Test-metode i denne klassen
- Utfør metodene @ After i denne klassen
- Utfør @After-metodene i superklassen
Eksempel: Opprette en klasse med fil som en testarmatur
offentlig klasse OutputFileTest{privat filutgang;@Før offentlig ugyldig createOutputFile (){utgang = ny fil (…);}@Etter offentlig ugyldig deleteOutputFile (){output.delete ();}@Test offentlig ugyldig testFile1 (){// kode for testsaksmål}@Test offentlig ugyldig testFile2 (){// kode for testsaksmål}}
I eksemplet ovenfor vil kjedekjeden være som følger -
- createOutputFile ()
- testFile1 ()
- deleteOutputFile ()
- createOutputFile ()
- testFile2 ()
- deleteOutputFile ()
Antagelse: testFile1 () kjører før testFile2 () - noe som ikke er garantert.
Engangsoppsett
- Det er mulig å kjøre en metode bare en gang for hele testklassen før noen av testene blir utført, og før en eller flere @Before- metoder.
- "Once only setup" er nyttig for å starte servere, åpne kommunikasjon osv. Det er tidkrevende å lukke og åpne ressursene for hver test.
- Dette kan gjøres ved å bruke @BeforeClass- merknaden
@BeforeClass offentlig statisk ugyldig Method_Name () {// klasseoppsettkode her}
En gang bare rive ned
- På samme måte som en gangs oppsett, er en oppryddingsmetode en gang tilgjengelig. Den kjører etter at alle testsaksmetoder og @ Etter at merknader er utført.
- Det er nyttig for å stoppe servere, lukke kommunikasjonskoblinger osv.
- Dette kan gjøres ved hjelp av @AfterClass- merknaden
@AfterClass offentlig statisk ugyldig Method_Name (){// klasseoppryddingskode her}
JUnit Test Suites
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 test-suitene. Mer informasjon om hvordan du kjører testserier og hvordan den brukes i JUnit vil bli dekket i denne veiledningen.
Junit Test Runner
JUnit gir et verktøy for gjennomføring av testsakene dine.
- JUnitCore- klassen brukes til å utføre disse testene.
- En metode som kalles runClasses levert av org.junit.runner.JUnitCore, brukes til å kjøre en eller flere testklasser .
- Returtype for denne metoden er resultatobjektet ( org.junit.runner.Result ), som brukes til å få tilgang til informasjon om testene. Se følgende kodeeksempel for mer klarhet.
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 ovennevnte kode behandles "resultat" objekt for å få feil og vellykkede resultater av testtilfeller vi utfører.
Første JUnit-program
Rettferdig kunnskap om SDLC, java-programmering og grunnleggende om programvaretestprosesser hjelper til å forstå JUnit-programmet.
La oss forstå enhetstesting ved hjelp av et live eksempel. Vi må lage en testklasse med en testmetode kommentert med @Test som gitt nedenfor:
MyFirstClassTest.java
pakke guru99.JUnit;importer statisk org.JUnit.Assert. *;importere org.JUnit.Test;offentlig klasse MyFirstClassTest {@Testoffentlig ugyldig myFirstMethod () {String str = "JUnit fungerer fint";assertEquals ("JUnit fungerer fint", str);}}
TestRunner.java
For å utføre testmetoden vår (ovenfor), må vi lage en testløper. I testløperen må vi legge til testklasse som en parameter i JUnitCores runclasses () -metode. Det vil returnere testresultatet, basert på om testen er bestått eller mislyktes.
For mer informasjon om dette, se koden nedenfor:
pakke guru99.JUnit;importer org.JUnit.runner.JUnitCore;importere 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 ());}}
Produksjon
Når TestRunner.java utfører testmetodene våre, får vi utdata som mislyktes eller bestått. Vennligst finn forklaringen nedenfor:
- I dette eksemplet, etter å ha kjørt MyFirstClassTest.java , er testen bestått og resultatet er i grønt.
- Hvis det hadde mislyktes, skulle det ha vist resultatet som rødt, og feil kan observeres i feilspor. Se nedenfor JUnit gui:
Sammendrag :
- JUnit er et rammeverk som støtter flere merknader for å identifisere en metode som inneholder en test.
- JUnit gir en kommentar kalt @Test, som forteller JUnit at den offentlige ugyldighetsmetoden der den brukes kan kjøre som en testtilfelle.
- En testarmatur er en sammenheng der en testsak 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 test-suitene.
- JUnit gir et verktøy for utførelse av testene der vi kan kjøre testsakene våre referert til som Test Runner.