JUnit Parameteriseret test med eksempel ved hjælp af @Parameters
Hvad er Parameterized Test in Junit?
Parameteriseret test er at udføre den samme test igen og igen med forskellige værdier. Det hjælper udvikleren med at spare tid ved at udføre samme test, som kun adskiller sig i deres input og forventede resultater.
Ved hjælp af Parameterized test kan man opsætte en testmetode, der henter data fra en eller anden datakilde.
Overvej en simpel test for at summere forskellige tal. Koden kan se sådan ud -
Fremgangsmåden ovenfor fører til megen redundans.
Vi har brug for en enkel tilgang og. Ved at bruge parameteriseret test kan du blot tilføje en metode til at indtaste 10 datainput, og din test vil køre 10 gange automatisk.
Trin til at oprette en parametriseret JUnit prøve
Følgende kode viser et eksempel på en parameteriseret test. Den tester sum() metoden for den aritmetiske klasse:
Trin 1) Opret en klasse. I dette eksempel skal vi indtaste to tal ved at bruge sum (int,int) metode, som vil returnere summen af givne tal
Trin 2) Opret en parameteriseret testklasse
Code Forklaring
- Code Linje 11: Annoter din testklasse ved hjælp af @runWith(Parameterized.class).
- Code Linje 13: Erklærer variablen 'firstNumber' som privat og skriv som int.
- Code Linje 14: Erklærer variablen 'secondNumber'som privat og skriv som int.
- Code Linje 15: Erklærer variablen 'expectedResult'som privat og skriv som int.
- Code Linje 16: Erklærer variablen 'airthematic' som privat og type som Airthematic.
@RunWith(klasse_navn.klasse): @RunWith annotation bruges til at angive dens løberklassenavn. Hvis vi ikke angiver nogen type som parameter, vil runtime vælge BlockJunit4ClassRunner som standard.
Denne klasse er ansvarlig for, at tests kører med en ny testinstans. Det er ansvarligt for at påberåbe sig JUnit livscyklusmetoder såsom opsætning (tilknyttede ressourcer) og teardown (frigivelsesressourcer).
For at parametrere skal du annotere ved hjælp af @RunWith og bestå den nødvendige .class for at blive testet
Trin 3) Opret en konstruktør, der gemmer testdataene. Den gemmer 3 variabler
Trin 4) Opret en statisk metode, der genererer og returnerer testdata.
Code Linje 32,33: Oprettelse af et todimensionelt array (leverer inputparametre til addition). Ved at bruge asList-metoden konverterer vi dataene til en listetype. Da returneringstypen for metodeinput er indsamling.
Code Linje 30: Ved brug af @Parametre annotation for at oprette et sæt inputdata til at køre vores test.
Den statiske metode identificeret af @Parameters-annotationen returnerer en samling, hvor hver indgang i samlingen vil være inputdata for én iteration af testen.
Overvej elementet
1,2,3 {}
Her
førstetal =1
andetNumber=2
forventet Resultat=3
Her vil hvert array-element blive videregivet til konstruktøren, et ad gangen, da klassen instansieres flere gange.
Trin 5) Den komplette kode
Code Forklaring:
- Code Linje 25: Brug @Before annotation til at konfigurere ressourcerne (Airthematic.class her). @Before-annotationen bruges her til at køre før hver testcase. Den indeholder prøvens forudsætning.
- Code Linje 36: Brug @Test annotation til at oprette vores test.
- Code Linje 39: Oprettelse af en påstandserklæring for at kontrollere, om vores sum svarer til, hvad vi forventede.
Trin 6) Opret en testløberklasse for at køre parameteriseret test:
Code Forklaring:
- Code Linje 8: Erklærer hovedmetoden for klassetesten, som vil køre vores JUnit test.
- Code Linje 9: Ved at udføre testcases ved hjælp af JunitCore.runclasses, vil det tage testklassens navn som en parameter (I vores eksempel bruger vi Airthematic.class).
- Code Linje 11: Behandling af resultatet med for loop og udskrivning af mislykket resultat.
- Code Linje 13: Udskriver det vellykkede resultat.
Output:
Her er outputtet, der viser en vellykket test uden fejl trace som angivet nedenfor:
Se resultatet på konsollen, som viser tilføjelse af to tal:-
Resumé
Parameteriseret test gør det muligt for udvikleren at udføre den samme test igen og igen ved hjælp af forskellige værdier.
Vigtige anmærkninger, der skal bruges under parametrering
- @RunWith
- @Parametre









