JUnit Assertions Class indeholder en samling statiske metoder, der giver dig mulighed for at udføre enhedstests. Påstande er en af JUnits kerneegenskaber. Denne klasse har over halvtreds forskellige metoder. Nogle Assertions-klassetest vil mislykkes, hvis en betingelse er sand, mens andre vil mislykkes, hvis en betingelse er falsk.
Assertions-klassen har også mange overbelastede metoder. Hver påstandsmetode har mindst to overbelastede metoder. Oplev nogle af de mere populære Assertions-klassemetoder, og find ud af, hvordan du bruger dem til at udføre enhedstests.
AssertEquals-metoden
JUnit 5 assertEquals-metoden har over ti variationer. Denne metode er en af de mere populære Assertions-klassemetoder. En variant af assertEquals-metoden tager en forventet værdi og den funktion, du vil evaluere (faktisk værdi). En anden større variant tager et yderligere tredje argument. Dette er en fejlmeddelelse, der vises, hvis JUnit enhed test fejler.
Overbelastningen af assertEquals-metoden sker med forskellige datatyper. Nogle assertEquals-overbelastningsmetoder tager et fjerde argument kaldet delta. Andre versioner erstatter fejlstrengen med en leverandørfunktionel grænseflade i form af en
lambda udtryk.AssertionsMethods Java-klasse
pakke com.program;
offentligklassePåstandemetoder{
offentligstatiskintfirkant(int antal){
Vend tilbage num * num;
}
}
AssertionsMethods Java-klassen ovenfor har en enkelt metode kaldet square. Kvadratmetoden tager en heltalværdi og returnerer dens kvadrat. For at teste kvadratmetoden og enhver fremtidig metode fra AssertionsMethods-klassen skal du oprette en JUnit-testcase.
AssertionsMethodsTest JUnit Test Case
pakke com.program;
importerestatiskorg.junit.Hævde.assertEquals;
importerestatiskorg.junit.jupiter.api.Påstande.*;importereorg.junit.jupiter.api.Prøve;
klassePåstandeMetodeTest{
@Prøve
ugyldigtestSquare(){
assertEquals(25, Påstandsmetoder.firkant(5));
assertEquals (36, AssertionMethods.square (6), "Dine kvadratværdier stemte ikke overens.");
assertEquals (49, AssertionMethods.square (7), () ->"Dine kvadratværdier stemte ikke overens.");
}
}
TestSquare()-metoden bruger tre variationer af assertEquals() til at teste square()-metoden. Hver assertEquals() er en succes, da alle de forventede værdier matcher de faktiske værdier, der returneres af square()-metoden.
AssertNull-metoden
Klassen JUnit Assertions har præcis tre assertNull-metoder. Hver af disse metoder tager et eller flere argumenter og hævder, om det givne objekt er null. Hvis et givet objekt ikke er nul, vil testen mislykkes.
@Prøve
offentligugyldigtestStringValue(){
Snor stringValue = nul;
assertNull (stringValue);
assertNull (stringValue, "Din strengværdi er ikke null");
assertNull (stringValue, () ->"Din strengværdi er ikke null");
}
Den første assertNull()-metode tager et strengobjekt og tjekker, om det er null. Den anden assertNull()-metode tager et strengobjekt og en strengmeddelelse for at blive vist, hvis testen mislykkes. Den tredje og sidste assertNull()-metode tager det objekt, du vil evaluere, og en leverandørfunktionel grænseflade.
I testcasen ovenfor fungerer leverandørgrænsefladen som et tildelingsmål for et lambda-udtryk. Lambda-udtrykket genererer en fejlmeddelelse, hvis testen mislykkes.
AssertTrue Method
AssertTrue()-metoden har seks variationer. Hver metode hævder, om en given betingelse er sand. Hvis en assertTrue()-betingelse er falsk, vil testen mislykkes.
@Prøve
ugyldigtestEvenNumbers(){
int nummer1 = 10;
int nummer2 = 16;
int nummer3 = 26;
assertTrue (nummer1 < nummer2);
assertTrue (nummer3 > nummer 2, "Din tilstand er ikke sand.");
assertTrue (nummer1 < nummer3, () ->" Din tilstand er ikke sand.");
assertTrue(() -> num1%2 == 0);
assertTrue(() -> num2%2 == 0, "Din værdi er ikke et lige tal.");
assertTrue(() -> num3%2 == 0, () ->"Din værdi er ikke et lige tal.");
}
TestEvenNumbers()-metoden viser, hvordan man bruger alle seks assertTrue()-metoder. Alle ovenstående metoder er sande, derfor udføres denne enhedstest uden fejl eller fejl.
- assertTrue (boolsk betingelse): denne metode tager en boolsk betingelse og hævder, om den er sand. Eksemplet på denne metode i koden ovenfor hævder, hvis den første heltalsværdi er mindre end den anden.
- assertTrue (boolsk tilstand, strengmeddelelse): denne metode tager en boolsk betingelse for at teste og en streng for at vise, hvis den er falsk.
- assertTrue (boolesk tilstand, leverandør
messageSupplier): denne metode tager en boolesk og en leverandør funktionel grænseflade, som et lambda-udtryk. Meddelelsesleverandøren indeholder en streng, der skal vises, hvis den boolske betingelse er falsk. - assertTrue (BooleanSupplier booleanSupplier): denne metode tager en funktionel BooleanSupplier-grænseflade i form af et lambda-udtryk, der evalueres til sand eller falsk. Eksemplet på denne metode i koden bruger et lambda-udtryk. Den tester resten af det første heltal divideret med to for at bestemme, om det er lige eller ulige.
- assertTrue (BooleanSupplier booleanSupplier, String message): denne metode tager en BooleanSupplier funktionel grænseflade i form af et lambda-udtryk. Det kræver også en strengmeddelelse at udskrive, hvis BooleanSupier ikke er sandt.
- assertTrue (BooleanSupplier booleanSupplier, Supplier
messageSupplier): denne metode kræver en funktionel BooleanSupplier-grænseflade at hævde. Det kræver også en leverandørfunktionel grænseflade, som er et lambda-udtryk, der udskriver en strengværdi, hvis testen mislykkes.
Den hævde Falske metode
AssertFalse()-metoden er det modsatte af assertTrue()-metoden. Denne metode evaluerer en given betingelse for at se, om den er falsk. Hvis en given betingelse er sand, vil assertFalse() testen mislykkes. AssertFalse()-metoden har også seks variationer, der accepterer de samme argumenter som deres assertTrue()-modstykker.
@Prøve
ugyldigtestNotEvenNumbers(){
int nummer1 = 11;
int nummer2 = 17;
int nummer3 = 27;
assertFalse (nummer2 < nummer1);
assertFalse (nummer2 > nummer 3, " Din tilstand er ikke falsk.");
assertFalse (nummer3 < nummer1, () ->" Din tilstand er ikke falsk.");
assertFalse(() -> num1%2 == 0);
assertFalse(() -> num2%2 == 0, "Din værdi er et lige tal.");
assertFalse(() -> num3%2 == 0, () ->"Din værdi er et lige tal.");
}
De seks assertFalse()-metoder i testNotEvenNumbers()-metoden resulterer alle i false, hvilket betyder, at assertFalse()-testene er vellykkede.
Fordelene ved enhedstestning
Enhedstest er en integreret del af softwareudviklingsprocessen. Store softwareprojekter mislykkes af forskellige årsager, lige fra de teams, der arbejder på dem, til udviklingstilgange.
Formålet med enhedstest er at eliminere softwarefejl ved at sørge for tidlig fejldetektion. Dette kræver, at teams udvikler klare specifikationer, forbedrer softwaredesign gennem fejldokumentation og yder support til softwarevedligeholdelse.
Enhedstest er ikke den eneste softwaretestmetode, du bør anvende i din udviklingslivscyklus, det er bare et meget godt sted at starte.