De JUnit Assertions Class bevat een verzameling statische methoden waarmee u unit-tests kunt uitvoeren. Beweringen zijn een van de kernfuncties van JUnit. Deze klasse heeft meer dan vijftig verschillende methoden. Sommige Assertions-klassetests zullen mislukken als een voorwaarde waar is, terwijl andere zullen mislukken als een voorwaarde onwaar is.
De klasse Assertions heeft ook veel overbelaste methoden. Elke assertion-methode heeft ten minste twee overbelaste methoden. Ontdek enkele van de meer populaire Assertions-klasse-methoden en ontdek hoe u ze kunt gebruiken om unit-tests uit te voeren.
De assertEquals-methode
De JUnit 5 assertEquals methode heeft meer dan tien variaties. Deze methode is een van de meer populaire Assertions-klassemethoden. Eén variant van de methode assertEquals heeft een verwachte waarde en de functie die u wilt evalueren (werkelijke waarde). Een tweede hoofdvariant heeft een extra derde argument nodig. Dit is een foutmelding die wordt weergegeven als de JUnit-eenheidstest mislukt.
De overbelasting van de assertEquals-methode gebeurt met verschillende gegevenstypen. Sommige assertEquals overbelastingsmethoden hebben een vierde argument genaamd delta. Andere versies vervangen de foutreeks door een functionele interface van de leverancier, in de vorm van a lambda uitdrukking.
BeweringenMethoden Java-klasse
pakket com.programma;
openbaarklasBeweringenMethoden{
openbaarstatischintvierkant(int nummer){
opbrengst aantal * aantal;
}
}
De AssertionsMethods Java-klasse hierboven heeft een enkele methode genaamd square. De kwadraatmethode neemt een geheel getal en retourneert het kwadraat ervan. Om de square-methode en elke toekomstige methode uit de AssertionsMethods-klasse te testen, moet u een JUnit-testcase maken.
De AssertionsMethodenTest JUnit Test Case
pakket com.programma;
importerenstatischorg.junit.Beweren.bevestigen is gelijk aan;
importerenstatischorg.junit.Jupiter.api.Beweringen.*;importerenorg.junit.Jupiter.api.Testen;
klasBeweringenMethodenTest{
@Testen
leegtetestplein(){
assertIs gelijk aan(25, BeweringMethoden.vierkant(5));
assertEquals (36, AssertionMethods.square (6), "Uw vierkante waarden kwamen niet overeen.");
assertEquals (49, AssertionMethods.square (7), () ->"Uw vierkante waarden kwamen niet overeen.");
}
}
De methode testSquare() gebruikt drie varianten van assertEquals() om de methode square() te testen. Elke assertEquals() is een succes, omdat alle verwachte waarden overeenkomen met de werkelijke waarden die worden geretourneerd door de methode square().
De assertNull-methode
De klasse JUnit Assertions heeft precies drie assertNull-methoden. Elk van deze methoden heeft een of meer argumenten en beweert of het gegeven object null is. Als een bepaald object niet null is, zal de test mislukken.
@Testen
openbaarleegtetestStringValue(){
Snaar stringValue = nul;
assertNull (stringValue);
assertNull (stringValue, "Uw tekenreekswaarde is niet null");
assertNull (stringValue, () ->"Uw tekenreekswaarde is niet null");
}
De eerste methode assertNull() neemt een string-object en controleert of deze null is. De tweede methode assertNull() heeft een tekenreeksobject en een tekenreeksbericht nodig om weer te geven als de test mislukt. De derde en laatste methode assertNull() neemt het object dat u wilt evalueren en een functionele leveranciersinterface.
In de bovenstaande testcase fungeert de interface van de leverancier als een toewijzingsdoel voor een lambda-expressie. De lambda-expressie genereert een foutmelding als de test mislukt.
De assertTrue-methode
De methode assertTrue() heeft zes variaties. Elke methode stelt of een bepaalde voorwaarde waar is. Als een voorwaarde assertTrue() onwaar is, zal de test mislukken.
@Testen
leegtetestEvenNummers(){
int getal1 = 10;
int aantal2 = 16;
int aantal3 = 26;
assertTrue (getal1 < aantal2);
assertTrue (num3 > nummer2, "Uw toestand is niet waar.");
assertTrue (getal1 < aantal3, () ->" Uw toestand is niet waar.");
assertTrue(() -> aantal1%2 == 0);
assertTrue(() -> aantal2%2 == 0, "Uw waarde is geen even getal.");
assertTrue(() -> aantal3%2 == 0, () ->"Uw waarde is geen even getal.");
}
De methode testEvenNumbers() laat zien hoe u alle zes assertTrue()-methoden kunt gebruiken. Alle bovenstaande methoden zijn waar, daarom wordt deze eenheidstest uitgevoerd zonder fouten of fouten.
- assertTrue (Booleaanse voorwaarde): deze methode neemt een Booleaanse voorwaarde en beweert of deze waar is. Het voorbeeld van deze methode in de bovenstaande code geeft aan of de eerste integerwaarde kleiner is dan de tweede.
- assertTrue (Booleaanse voorwaarde, String-bericht): deze methode heeft een Booleaanse voorwaarde nodig om te testen en een tekenreeks om weer te geven als deze onwaar is.
- assertTrue (booleaanse voorwaarde, leverancier)
messageSupplier): deze methode neemt een Booleaanse en een Supplier functionele interface als lambda-expressie. De leverancier van het bericht bevat een tekenreeks die moet worden weergegeven als de Booleaanse voorwaarde onwaar is. - assertTrue (BooleanSupplier booleanSupplier): deze methode heeft een BooleanSupplier-functionele interface, in de vorm van een lambda-expressie die evalueert naar waar of onwaar. Het voorbeeld van deze methode in de code gebruikt een lambda-expressie. Het test de rest van het eerste gehele getal gedeeld door twee om te bepalen of het even of oneven is.
- assertTrue (BooleanSupplier booleanSupplier, String message): deze methode heeft een BooleanSupplier-functionele interface in de vorm van een lambda-expressie. Er is ook een stringbericht nodig om af te drukken als de BooleanSupier niet waar is.
- assertTrue (BooleanSupplier booleanSupplier, Supplier
messageSupplier): deze methode heeft een BooleanSupplier-functionele interface nodig om te bevestigen. Er is ook een functionele leveranciersinterface voor nodig, een lambda-expressie die een tekenreekswaarde afdrukt als de test mislukt.
De assertFals-methode
De methode assertFalse() is het tegenovergestelde van de methode assertTrue(). Deze methode evalueert een bepaalde voorwaarde om te zien of deze onwaar is. Als een bepaalde voorwaarde waar is, zal de test assertFalse() mislukken. De methode assertFalse() heeft ook zes varianten die dezelfde argumenten accepteren als hun tegenhangers assertTrue().
@Testen
leegtetestNotEvenNumbers(){
int getal1 = 11;
int aantal2 = 17;
int aantal3 = 27;
assertFals (num2 < aantal1);
assertFals (num2 > nummer3, " Uw toestand is niet onwaar.");
assertFalse (num3 < aantal1, () ->" Uw toestand is niet onwaar.");
assertFalse(() -> aantal1%2 == 0);
assertFalse(() -> aantal2%2 == 0, "Uw waarde is een even getal.");
assertFalse(() -> aantal3%2 == 0, () ->"Uw waarde is een even getal.");
}
De zes assertFalse()-methoden in de testNotEvenNumbers()-methode resulteren allemaal in false, wat betekent dat de assertFalse()-tests succesvol zijn.
De voordelen van unit-testen
Unit testing is een integraal onderdeel van het softwareontwikkelingsproces. Grote softwareprojecten mislukken om verschillende redenen, variërend van de teams die eraan werken tot ontwikkelingsbenaderingen.
Het doel van unit-testing is om softwarefouten te elimineren door vroegtijdige foutdetectie te bieden. Dit vereist dat teams duidelijke specificaties ontwikkelen, softwareontwerp verbeteren door middel van foutdocumentatie en ondersteuning bieden voor software-onderhoud.
Unit-testen is niet de enige benadering voor het testen van software die u zou moeten gebruiken in uw ontwikkelingslevenscyclus, het is gewoon een zeer goede plek om te beginnen.