multiple ways execute junit tests
Denne vejledning viser flere måder at udføre JUnit-test på, såsom at køre som en JUnit-test, at bruge genvejstaster eller at køre JUnit-test fra kommandolinien osv.
Vi så, hvordan man skriver de grundlæggende JUnit test tilfælde og har en test fixture tilgang som en af de gode programmeringsmetoder for JUnit i vores tidligere tutorial.
I denne vejledning skal vi se på de forskellige måder, vi kan bruge til at udføre test for JUnit. Du vil blive overrasket over at se på antallet af tilgængelige muligheder for at køre disse testsager.
=> Hold øje med den enkle JUnit-træningsserie her.
Hvad du lærer:
Forskellige måder at udføre JUnit-test på
For at udføre JUnit-test er der visse måder, hvorpå du kan køre en enkelt klassefil med en eller flere testmetoder ved hjælp af følgende muligheder:
- 'Kør som JUnit-test'.
- Kør sidst udførte JUnit-test gennem menupunktet.
- Kør ved hjælp af genvejstaster.
- Kør kun en testmetode i en klasse.
- Kør gennem kommandolinjen.
- Kør ved hjælp af Testrunner-klassefilen.
- Kør også gennem Maven.
Bemærk: JUnit-testudførelsen gennem Maven overvejes i en separat tutorial til JUnit Maven.
Gentagelse af pointen i denne vejledning lærer vi, hvordan flere tests kan grupperes i en testpakke, og hvordan kan man køre pakken på forskellige måder. Desuden skal den specificere visse relevante og relaterede yderligere oplysninger.
# 1) Kør som JUnit-test
Den enkleste måde, hvorpå du kan udføre JUnit-testene, er:
Metode 1:
- Højreklik på klassefilen i scriptvisningen
- Vælg Kør som -> JUnit Test
- Klassefilen udføres.
Metode 2:
- På samme måde kan du vælge klassefilen fra Package Explorer-visningen
- Højreklik på filen
- Vælg Kør som -> JUnit Test
- Klassefilen udføres.
Bemærk: På denne måde kan du udføre en klassefil ad gangen.
# 2) Kør sidst udførte JUnit-test via menuindstillingen
Du kan køre en JUnit klassefil ved at holde en klassefil åben i editoren. Gå til topmenuen i Formørkelse => Vælg Kør => Kør . Muligheden Kør -> Kør betyder dybest set at køre den test, du løb sidst.
Lad os overveje en JUnit-klasse med flere metoder / test for bedre klarhed om, hvordan Kør-> Kør arbejder:
- Scenarie 1 : Hvis du havde kørt en enkelt metode med @ Test, så når du klikker Kør-> Kør , den eneste metode, der kørte sidst, ville kun køre denne gang og ikke hele JUnit-klassen.
- Scenarie 2 :Hvor havde du kørt hele klassen tidligere, Kør-> Kør ville køre hele klassefilen igen.
Nu hvor vi ved, at Run-> Run kører den test, du løb sidst, bringer det os til en spørgsmål hvis du kan ændre indstillingen for indstillingen Kør-> Kør?
Svaret på spørgsmålet er Ja, præferencen for indstillingen Kør-> Kør kan ændres. Der er en bestemt konfiguration knyttet til Kør-> Kør.
Sådan kan du gøre det:
til) Eclipse's køreindstilling er som udgangspunkt som standard kør den valgte ressource eller aktive editor, hvis den kan startes .
Så hvad betyder standardindstillingen - 'Køre den valgte ressource eller aktive editor, hvis den kan startes' gør?
Svaret på dette er, at det ikke udfører den applikation, du startede sidst, men snarere følger genkørslen af den sidst lancerede applikation for den aktive redaktør .
b) Hvordan ændrer du derefter standardindstillingen?
Svaret på dette er, at du kan ændre standardindstillingen i Eclipse for at køre den sidste applikation, du startede uanset den aktive editor du har.
Nedenfor vises, hvordan du ændrer indstillingen for Kør-indstilling ved hjælp af Kør -> Kør:
- Naviger til Windows => Indstillinger => Kør / fejlret => Start
- 'Launch Operation' har en standardknap - '' Start den tidligere lancerede applikation ' valgt under den anden mulighed ' Start den valgte ressource eller aktive editor. Hvis den ikke kan startes : ’.
- Du skal muligvis ændre denne præference til den første radioknap, dvs. '' Start altid den tidligere lancerede applikation '.
# 3) Kør ved hjælp af genvejstaster
Du kan vælge klassefilen fra Script-visningen eller Package Explorer-visningen og bruge nedenstående genvejstaster til at udføre JUnit-testene:
- Tryk på tasterne ALT + SKIFT + X, T for at udføre JUnit-klassefilen.
- Et alternativ til dette ville være presse ALT + R derefter CTRL + F11 at udføre en JUnit-klassefil. ALT + R derefter CTRL + F11 er genvej til menupunkt Kør -> Kør
# 4) Kør kun en testmetode i en klasse
Nogle gange vil du måske køre en enkelt JUnit-testmetode.
I tilfælde af at der er mere end en metode inde i JUnit-klassefilen:
- Du kan vælge eller placere din markør på metodens navn i scriptvisningen.
- Brug enten genvejstasterne nævnt ovenfor eller indstillingerne ovenfor for kun at udføre den metode, du lige har valgt.
Bemærk: ALT + SHIFT + X, T kan køre valgte metoder som forventet. Men hvis du ønsker at køre en bestemt metode i en JUnit-klasse, skal den være en testcase, der er kommenteret med @Test ellers viser den initialiseringsfejl.
Med andre ord, hvis du vælger metoder under @Before eller @After (enhver anden kommentar end @Test), vil den specifikke metodeudførelse fejle.
# 5) Kør JUnit-tests fra kommandolinjen
Ligesom du kører alle Java-klassefiler via kommandolinjen, kan du også kompilere og køre JUnit-klassefiler via kommandolinjen.
Vi vil dække nedenstående underemner her for at få en forståelse af, hvordan vi kan køre JUnit-tests gennem kommandolinjen:
- Hvordan kompileres en JUnit-test på kommandolinjen?
- Hvordan køres en JUnit-test på kommandolinjen?
- Yderligere oplysninger om kommandolinjekørsel.
- Hvordan løser man ukendt kommandofejl til javac-kommando?
- Fordele ved at køre tests ved hjælp af kommandolinjen.
# 5.1) Hvordan kompileres en JUnit-test i kommandolinjen?
Forudsætningen for at kompilere og køre en JUnit-klassefil via kommandoprompten er:
- Tilføj først relevante JUnit jar-filer til klassestien.
- Indstil miljøvariablerne, som det blev nævnt i Opsætning af JUnit vejledning.
- Derefter kompileres en JUnit-klassefil.
- Syntaksen til kompilering af en JUnit-klassefil gennem kommandolinjen er:
javac -cp junit-4.0.0.jar;. JUnitProgram.java
Her er javac Java-kompilatoren, der bruger -cp-indstillingen.
Kommandoen javac -cp ser efter følgende parametre:
- JUnit jar-filen efterfølges af et semikolon.
- Stien til det bibliotek, hvor kildefilen findes.
- Klassens filnavn
Hvad betyder prikken (.) I den ovennævnte syntaks?
Vi har nævnt en prik i stedet for hele stien til kataloget.
Prikken antyder, at:
- Klassestien inkluderer allerede den aktuelle mappe til Java-kildefiler.
- JVM (Java Virtual Machine) antager automatisk, at den aktuelle mappe er, hvor kildefilerne er placeret.
- JVM søger derefter efter det nævnte JUnit-filnavn der. Filnavnet er den sidste parameter, der er angivet i kompileringskommandoen.
Du kan kontrollere de parametre, der går ind i -cp gennem følgende trin:
- Åbn kommandoprompten.
- Skriv javac, og tryk på ENTER.
- Alle relevante indstillinger vises inklusive -cp. Du finder ud af, at -cp går med som en parameter, hvor stien er den sti til klassefiler, som JVM søger efter.
Skærmbillede nedenfor:
Sådan kompileres flere filer på én gang?
Flere JUnit-testfiler kan kompileres på én gang ved at adskille filnavne med mellemrum.
Nedenfor er et eksempel på, hvor du kompilerer java-filer JUnitProgram og demoTest:
javac -cp junit-4.0.0.jar;. JUnitProgram.java demoTest.java
# 5.2) Hvordan køres en JUnit-test fra kommandolinjen?
Ligesom javac bruges Java-compileren på lignende måde java -cp bruges til at køre Java-klassefiler inklusive JUnit-klasser.
Nedenfor er den syntaks, som du kan følge:
java -cp junit-4.0.0.jar;. JUnitProgram demoTest
Denne kommando udfører både filerne JUnitProgram.java og demoTest.java efter hinanden.
# 5.3) Yderligere information om 'kommandolinjekørsel'.
hvordan man åbner bin-filer på Android
Her er nogle yderligere oplysninger om hvordan man løser en fejl med javac-kommandoen og hvorfor bruge kommandolinjekørsel
# 5.3.1) Hvordan løser jeg den ukendte kommandofejl for javac-kommandoen?
De fleste af os vil støde på dette problem, mens vi prøver at udføre javac kommando gennem kommandolinjen. Dette er også sket for mig; så vi tænkte på at sætte det her.
til) Vi kom ind i kommandoen javac og trykkede Gå ind på kommandoprompten.
b) Fejlmeddelelsen - javac genkendes ikke som en intern eller ekstern kommando, et operativt program eller en batchfil dukkede op som nedenfor:
Det er her, din kompilering af Java-klassefiler fra kommandolinjen begynder. Derfor er fejlen faktisk et spørgsmål om bekymring og kan ikke ignoreres.
Følg nedenstående trin for at løse problemet Her er!!! du ser fejlen er væk:
- Lad os demonstrere denne proces ved hjælp af en grundlæggende Java-fil. Det første trin du kan gøre er at oprette en grundlæggende Java-klasse For eksempel. : “Calculator.java”
- Vi finder Calculate.java fra Windows Stifinder og kopierer stien.
- Skift biblioteket i kommandoprompten til den sti, du kopierede (kildefilstien). Brug cd til at ændre biblioteket.
- Indstil nu PATH til mappen jdk bin ved hjælp af kommandoen.
SET PATH = og tryk på ENTER.
- Her er jdk-stien C: Program Files Java jdk1.8.0_181 bin. Derfor har vi sat stien i overensstemmelse hermed. Den resulterende viser intet ved at trykke på ENTER efter kommandoen.
- Kontroller nu, om JVM genkender kommandoen javac ved at indtaste kommandoen javac og trykke på ENTER.
-
- Hvis den genkender kommandoen, vises et sæt gyldige indstillinger for javac som den resulterende.
- Ellers vises fejlen igen.
Nedenfor er et skærmbillede, der viser, at vi med succes slap af med fejlen.
Lad os ikke prøve at undgå et væsentligt spørgsmål her:
Hvorfor genkendte JVM javac-kommandoen efter at have indstillet stien til mappen jdk bin?
Vi er sikre på, at du også vil have dette spørgsmål i tankerne. Nedenfor er svaret.
- Jdk bin-mappen har alle bibliotekerne til javac-kommandoen. Derfor er JVM nu, når du indstiller stien i overensstemmelse hermed, i stand til at genkende javac-kommandoen uden noget problem.
- Se javac-mappe under jdk-bakken i nedenstående billede.
- Derefter kan du køre kommandoen 'Java compile and run' ved hjælp af kommandolinjen. Husk desuden at indstille variablen CLASSPATH korrekt. JAVA_HOME og JUNIT_HOME variabel til henholdsvis Java-filer og JUnit-filer.
# 5.3.2) Fordelen ved at køre tests ved hjælp af kommandolinjen:
Lad os hurtigt diskutere fordelen i forhold til at køre Java / JUnit testcases via kommandolinjen.
Som du allerede er opmærksom på, er der ingen hård og hurtig regel om udførelse af klassefiler gennem kommandolinjen. Det er bare en alternativ måde, hvordan du kan styre kompilering og udførelse af klassefiler.
Hvis du spørger, om der er en særlig fordel ved at have know-how om udførelsen af JUnit-testene via kommandolinjen, vil vi sige 'Bestemt, ja'.
Årsagen til et 'ja' er angivet nedenfor:
- Alle disse række trin, som vi fulgte ovenfor; kunne tilføjes til notesblok og konverteres til en batchfil.
- Når du nu kører denne batchfil med et dobbeltklik, kan den udløse kompilering og udførelse af flere JUnit-testfiler navngivet i batchfilen.
Hvad er fordelen ved at have en batchfil til at kompilere og udføre Java-filer?
- En batch / jar-fil kan fungere som et brugervenligt værktøj, der kan gøre det muligt for enhver, der ikke er opmærksom på den interne logik i koden, og udføre flere testsager meget let.
- Dette kan eliminere behovet for at have en specialudvikler eller QA til at udføre disse testudførelsesjob. Udførelsesopgaven kan delegeres til enhver ressource uden at bekymre sig om færdighedsbegrænsninger.
I den næste alternative mulighed vil vi se en anden fordelagtig og prisværdig måde at udføre vores JUnit-testsager på.
# 6) Kør Test Suite ved hjælp af Testrunner Class
I realtidsscenarier er det mindst foretrukne at udføre en testcase ad gangen.
- Vi har tilfælde, hvor vi er nødt til at køre en gruppe relaterede / ikke-relaterede testsager.
- For eksempel er vi muligvis nødt til at oprette og udføre regressionstest-suiter eller røg-test-suiter.
Vi lærer nu om implementeringen af forskellige kommentarer, der bruges til at oprette testpakker og udføre pakken.
Den samlede proces til udførelse af testpakken ved hjælp af Test Runner er i henhold til nedenstående arbejdsgang:
- Opret JUnit klasse 1, JUnit klasse 2,…. JUnit klasse n.
- Opret en testfilklassefil, der grupperer testsagerne.
- Opret en Testrunner-klassefil for at påkalde den oprettede testpakke.
- Udfør Testrunner-klassen.
Strukturen af de programmer, hvorigennem vi skal demonstrere oprettelsen af testpakke og udførelse af runner-filen, vises i nedenstående billede:
Her vil vi dække underemnerne:
- Oprettelse af JUnit-klasser
- Oprettelse af testsuiter
- Oprettelse af en Testrunner-fil og udførelse af testpakker ved hjælp af den.
- Yderligere oplysninger om funktionen af @RunWith-kommentar.
# 6.1) Oprettelse af JUnit-klasser
Lad os starte med at oprette to enkle JUnit-klassefiler:
- JUnitTestCase1.java - Det inkluderer koden til bekræftelse af en forventet numerisk værdi - variablen Værdi1 matcher en faktisk værdi af variablen Værdi2.
- JUnitTestCase2.java - Inkluderer koden for at kontrollere, om den forventede strengvariabel strValue og faktisk strengvariabel strActual Tændstikker.
Disse er dybest set to testsager, som vi vil forsøge at komme ind i en logisk gruppering kaldet test suite og få den til at køre den ene efter den anden.
Kode til JUnitTestCase1.java
package demo.tests; import static org.junit.Assert.*; import java.util.*; import java.lang.String; import static org.testng.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import junit.framework.Assert; public class JUnitTestCase1 { public int Value1=6000; @Test public void junitMethod1(){ int Value2=9000; Assert.assertEquals(Value1, Value2); } }
Kode til JUnitTestCase2.java
package demo.tests; import static org.junit.Assert.*; import java.util.*; import java.lang.String; import static org.testng.Assert.assertTrue; import org.junit.Before; import org.junit.Test; import junit.framework.Assert; public class JUnitTestCase2 { public String stringValue='JUnit'; @Test public void junitMethod2(){ String strActual='Junit1'; Assert.assertSame(stringValue, strActual); } }
# 6.2) Oprettelse af Test Suite:
Dette afsnit og det næste afsnit spiller en fremtrædende rolle i hele processen med at oprette og køre en testpakke. I dette afsnit vil vi forsøge at forstå hvordan man grupperer flere JUnit testklasser og binder dem til en testpakke .
I henhold til det strukturelle billede ovenfor, lad os oprette en testpakke, der grupperer JUnitTestCase1.java og JUnitTestCase2.java og navngiver suiten som JUnitTestSuite.java
De to kommentarer, der hjælper os med at opnå oprettelsen af en testpakke, er:
- @RunWith og
- @SuiteClasses
Nødvendige pakker til kommentarerne:
- Du bliver nødt til at importere pakken org.junit.runner.RunWith; til inkludering af @RunWith-kommentar.
- Du skal bruge pakken org.junit.runners.Suite.SuiteClasses for at @SuiteClasses skal fungere.
- Derudover skal du også importere pakken org.junit.runners.Suite for at sende en parameter Suite.class til kommentaren @RunWith.
Lad os se på koden for bedre forståelse !!
Kode til JUnitTestSuite.java
package demo.tests; import static org.junit.Assert.*; import org.junit.After; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) @SuiteClasses({JUnitTestCase1.class, JUnitTestCase2.class }) public class JUnitTestSuite { @BeforeClass public static void printMe() { System.out.println('JUnitTestSuite is the test suite grouping testcase 1 and testcase 2'); } }
Forståelse af koden til JUnitTestSuite.java:
- @RunWith hjælper JVM med at forstå, hvilken slags løberklasse den skal køre For eksempel. Suite.klasse eller agurk.klasse
- Her er parameteren @RunWith Suite.klasse . Det hjælper JVM med at genkende, at den aktuelle fil, hvor @RunWith (Suite.class) bruges, spiller en rolle i Test Suite.
- JUnit-testklassens navne, der skal bindes sammen i en suite, skal sendes som et strengarray i form af parametre for @SuiteClasses, der hver er adskilt med et komma.
- Dette gør det muligt for JVM at vide, hvilke testcases der skal grupperes under pakken.
- Suitenavnet vil være JUnit-klassens filnavn, der er kommenteret med @RunWith og @SuiteClasses, som i dette tilfælde er JUnitTestSuite.
# 6.3) Opret Test Runner-fil og kør JUnit Test-pakke ved hjælp af Test Runner
Det sidste trin hjælper os med at køre den testpakke, som vi lige har oprettet i ovenstående afsnit ved hjælp af en Testrunner-fil.
- Vi opretter nu en Java-fil ved navn SuiteRunnerFile.
- Denne SuiteRunnerFile.java er ikke en JUnit-klasse, men en almindelig Java-fil med hovedmetoden i den.
Lad os se på koden og derefter prøve at forstå den.
Kode til SuiteRunnerFile.java
package demo.tests; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class SuiteRunnerFile { public static void main(String args()) { Result result=JUnitCore.runClasses(JUnitTestSuite.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } } }
Pakker, der er nødvendige for kommentaren
- Du skal importere pakken org.junit.runner.JunitCore for at inkludere JUnitCore klasse i koden.
- Du skal importere pakken org.junit.runner.notification.Failure og org.junit.runner. Resultat med henholdsvis fejl og resultatklasse i koden.
Forståelse af koden til SuiteRunnerFile.java
- For at oprette en runner-fil til eksekvering af testpakken skal JUnitCore klasse spiller en vigtig rolle.
- Det runClasses () metode til JUnitCore klasse tager test suite klassens navn som inputparameter, derfor har vi udsagnet JUnitCore. runClasses (JUnitTestSuite. klasse ).
- Returtypen for denne erklæring er Resultat klasseobjekt, der gemmer den resulterende successtatus og fiaskostatus for hver af test-sagsfilen; efter udførelse. Det er derfor, vi har en resultat som den Resultat klasseobjekt i koden.
- Derefter udskriver vi eventuelle testfejls fejl. Ligesom getFailures () -metoden kan du muligvis også få fejloptællingen og Run-count ved hjælp af henholdsvis metoden getFailureCount () og getRunCount ().
- Nu er SuiteRunnerFile klar til at udføre,
- Vælg filen fra Package Explorer og
- Højreklik og vælg Kør som -> Java, programmet udføres.
Nedenfor er skærmbilledet af konsolvinduet.
Forklaring af resultaterne på konsollen:
Konsollen ovenfor viser, at:
- Klassefilen JUnitTestSuite er udført via SuiteRunnerFile.
- Metoden printMe () under annotering @BeforeClass blev udført først og
- Derefter blev testsagerne i testpakken udført efter hinanden. Sådan kan testpakken oprettes og køres som en pakke.
# 6.4) Yderligere info - Hvordan fungerer @RunWith?
- @RunWith er en JUnit API, der grundlæggende kun tager et element som en inputparameter, der er et filnavn på en runner-klasse.
- JUnit framework påkalder den angivne klasse som testløber.
Nedenstående uddrag fra RunWith.java hjælper dig med at få fat i:
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) @Inherited public @interface RunWith { Class Extends Runner> value(); }
Forståelse af ovenstående RunWith-interface-kode:
- Det specificerede værdi elementet skal være en afledt klasse af Løber klasse . Begrebet refleksion bruges her.
- Et meget godt eksempel på en sådan løberklasse er allerede implementeret i vores kode, dvs. @ RunWith (Suite.class), hvor en gruppe testkasser er bundet sammen for at lave en testpakke.
- Tilsvarende kunne et andet godt eksempel på brug af en Runner-klasse med @RunWith være @RunWith (Cucumber.class), som er en forretningsdrevet udviklingsramme (BDD) til testautomatisering ved hjælp af Selenium i Java. Dette hjælper rammen med at køre agurkbaserede testsager.
Bemærk:
- Kommentarerne og parametrene, der blev brugt til at oprette og køre JUnit-testpakken i denne vejledning, var specifikke for JUnit 4.
- Der er en lidt anden måde, hvordan du opretter en JUnit Test Suite og udfører runner-filen i JUnit 5.
Vi vil snart have en fokuseret forståelse af alle aspekterne af JUnit 4 vs JUnit 5 i vores kommende tutorials.
# 7) Kør JUnit-testtilfælde ved hjælp af Maven
Du kan også have et Maven-projekt bestående af JUnit-test på plads og køre testene gennem Maven, som vil blive dækket i en separat tutorial.
Konklusion
- Vi lærte alle de forskellige muligheder for at køre JUnit-testene - enkelt såvel som flere dem grupperet i testpakker.
- Vi fik yderligere viden om, hvordan vi opdaterer præferencen for Run-indstillingen, hvordan vi retter javac-fejl, og hvordan kunne kommandolinjekørsel hjælpe os.
- Desuden lærte vi også om, hvordan @RunWith-kommentar fungerer.
Derfor er der mere at følge i de kommende tutorials. 'Stand By' indtil da !!!
=> Besøg her for at lære JUnit fra bunden.
Anbefalet læsning
- JUnit-test: Sådan skriver du JUnit-testtilfælde med eksempler
- JUnit Tutorial for begyndere - Hvad er JUnit-test
- Hvad er en JUnit-testarmatur: Vejledning med JUnit 4-eksempler
- Specflow-rapportering: Sådan genereres testrapporter og udføres selektive tests
- Download, installer og konfigurer JUnit i formørkelse
- Introduktion til JUnit Framework og dens anvendelse i Selenium Script - Selen Tutorial # 11
- Opret appiumtest til en Android-app
- Indsæt flere dokumenter i MongoDB ved hjælp af arrays