Die JUnit-Assertions-Klasse enthält eine Sammlung statischer Methoden, mit denen Sie Unit-Tests durchführen können. Behauptungen sind eine der Kernfunktionen von JUnit. Diese Klasse hat über fünfzig verschiedene Methoden. Einige Assertions-Klassentests schlagen fehl, wenn eine Bedingung wahr ist, während andere fehlschlagen, wenn eine Bedingung falsch ist.
Die Assertions-Klasse hat auch viele überladene Methoden. Jede Zusicherungsmethode hat mindestens zwei überladene Methoden. Entdecken Sie einige der beliebtesten Assertions-Klassenmethoden und finden Sie heraus, wie Sie sie zum Durchführen von Komponententests verwenden können.
Die assertEquals-Methode
Die AssertEquals-Methode von JUnit 5 hat über zehn Variationen. Diese Methode ist eine der beliebtesten Methoden der Assertions-Klasse. Eine Variation der Methode assertEquals nimmt einen erwarteten Wert und die Funktion, die Sie auswerten möchten (tatsächlicher Wert). Eine zweite Hauptvariante nimmt ein zusätzliches drittes Argument. Dies ist eine Fehlermeldung, die angezeigt wird, wenn die JUnit-Einheitentest scheitert.
Das Überladen der Methode assertEquals erfolgt mit unterschiedlichen Datentypen. Einige Überladungsmethoden von assertEquals akzeptieren ein viertes Argument namens delta. Andere Versionen ersetzen die Fehlerzeichenfolge durch eine Lieferantenfunktionsschnittstelle in Form von a Lambda-Ausdruck.
AssertionsMethods-Java-Klasse
Paket com.programm;
ÖffentlichkeitKlasseBehauptungenMethoden{
ÖffentlichkeitstatischintQuadrat(int Zahl){
Rückkehr Zahl * Zahl;
}
}
Die obige Java-Klasse AssertionsMethods hat eine einzelne Methode namens square. Die Quadratmethode nimmt einen ganzzahligen Wert und gibt sein Quadrat zurück. Um die quadratische Methode und jede zukünftige Methode aus der AssertionsMethods-Klasse zu testen, müssen Sie einen JUnit-Testfall erstellen.
Der AssertionsMethodsTest JUnit-Testfall
Paket com.programm;
importierenstatischorg.junit.Behaupten.assertgleich;
importierenstatischorg.junit.Jupiter.api.Behauptungen.*;importierenorg.junit.Jupiter.api.Prüfen;
KlasseBehauptungenMethodenTest{
@Prüfen
LeeretestSquare(){
behauptenGleich(25, Behauptungsmethoden.Quadrat(5));
assertEquals (36, AssertionMethods.square (6), "Ihre Quadratwerte stimmten nicht überein.");
assertEquals (49, AssertionMethods.square (7), () ->"Ihre Quadratwerte stimmten nicht überein.");
}
}
Die testSquare()-Methode verwendet drei Variationen von assertEquals(), um die square()-Methode zu testen. Jedes assertEquals() ist ein Erfolg, da alle erwarteten Werte mit den tatsächlichen Werten übereinstimmen, die von der square()-Methode zurückgegeben werden.
Die assertNull-Methode
Die Klasse JUnit Assertions hat genau drei assertNull-Methoden. Jede dieser Methoden nimmt ein oder mehrere Argumente und bestätigt, ob das angegebene Objekt null ist. Wenn ein bestimmtes Objekt nicht null ist, schlägt der Test fehl.
@Prüfen
ÖffentlichkeitLeeretestStringValue(){
Schnur stringValue = Null;
asserNull (stringValue);
assertNull (stringWert, "Ihr Zeichenfolgenwert ist nicht null");
assertNull (stringValue, () ->"Ihr Zeichenfolgenwert ist nicht null");
}
Die erste Methode assertNull() nimmt ein String-Objekt und prüft, ob es null ist. Die zweite Methode assertNull() nimmt ein String-Objekt und eine String-Meldung zur Anzeige, wenn der Test fehlschlägt. Die dritte und letzte Methode assertNull() nimmt das Objekt, das Sie auswerten möchten, und eine funktionale Schnittstelle des Lieferanten.
Im obigen Testfall fungiert die Lieferantenschnittstelle als Zuweisungsziel für einen Lambda-Ausdruck. Der Lambda-Ausdruck generiert eine Fehlermeldung, wenn der Test fehlschlägt.
Die assertTrue-Methode
Die Methode assertTrue() hat sechs Variationen. Jede Methode behauptet, ob eine gegebene Bedingung wahr ist. Wenn eine assertTrue()-Bedingung falsch ist, schlägt der Test fehl.
@Prüfen
LeereTestGeradeZahlen(){
int num1 = 10;
int num2 = 16;
int num3 = 26;
assertTrue (num1 < num2);
assertTrue (num3 > Nummer2, "Ihre Bedingung ist nicht wahr.");
assertTrue (num1 < num3, () ->" Ihre Bedingung ist nicht wahr.");
assertTrue(() -> num1%2 == 0);
assertTrue(() -> num2%2 == 0, "Ihr Wert ist keine gerade Zahl.");
assertTrue(() -> num3%2 == 0, () ->"Ihr Wert ist keine gerade Zahl.");
}
Die Methode testEvenNumbers() demonstriert die Verwendung aller sechs assertTrue()-Methoden. Alle oben genannten Methoden sind wahr, daher wird dieser Komponententest ohne Fehler oder Fehler ausgeführt.
- assertTrue (boolesche Bedingung): Diese Methode akzeptiert eine boolesche Bedingung und behauptet, ob sie wahr ist. Das Beispiel dieser Methode im obigen Code bestätigt, ob der erste ganzzahlige Wert kleiner als der zweite ist.
- assertTrue (boolesche Bedingung, Zeichenfolgennachricht): Diese Methode nimmt eine boolesche Bedingung zum Testen und eine Zeichenfolge zum Anzeigen, wenn sie falsch ist.
- assertTrue (Boolesche Bedingung, Supplier
messageSupplier): Diese Methode verwendet eine boolesche und eine Lieferanten-Funktionsschnittstelle als Lambda-Ausdruck. Der Nachrichtenlieferant enthält eine Zeichenfolge, die angezeigt werden soll, wenn die boolesche Bedingung falsch ist. - assertTrue (BooleanSupplier booleanSupplier): Diese Methode verwendet eine BooleanSupplier-Funktionsschnittstelle in Form eines Lambda-Ausdrucks, der als wahr oder falsch ausgewertet wird. Das Beispiel dieser Methode im Code verwendet einen Lambda-Ausdruck. Es testet den Rest der ersten Ganzzahl dividiert durch zwei, um festzustellen, ob er gerade oder ungerade ist.
- assertTrue (BooleanSupplier booleanSupplier, String message): Diese Methode nimmt eine BooleanSupplier-Funktionsschnittstelle in Form eines Lambda-Ausdrucks an. Es wird auch eine Zeichenfolgennachricht zum Drucken benötigt, wenn BooleanSupier nicht wahr ist.
- assertTrue (BooleanSupplier booleanSupplier, Lieferant
messageSupplier): Diese Methode nimmt eine BooleanSupplier-Funktionsschnittstelle zum Zusichern. Es benötigt auch eine funktionale Lieferantenschnittstelle, bei der es sich um einen Lambda-Ausdruck handelt, der einen Zeichenfolgenwert ausgibt, wenn der Test fehlschlägt.
Die assertFalse-Methode
Die Methode assertFalse() ist das Gegenteil der Methode assertTrue(). Diese Methode wertet eine gegebene Bedingung aus, um zu sehen, ob sie falsch ist. Wenn eine gegebene Bedingung wahr ist, schlägt der assertFalse()-Test fehl. Die Methode assertFalse() hat auch sechs Variationen, die die gleichen Argumente akzeptieren wie ihre Gegenstücke assertTrue().
@Prüfen
LeeretestNotEvenNumbers(){
int num1 = 11;
int num2 = 17;
int num3 = 27;
behauptenFalsch (num2 < num1);
behauptenFalsch (num2 > Nummer3, " Ihre Bedingung ist nicht falsch.");
behauptenFalsch (num3 < num1, () ->" Ihre Bedingung ist nicht falsch.");
behauptenFalsch () -> num1%2 == 0);
behauptenFalsch () -> num2%2 == 0, "Ihr Wert ist eine gerade Zahl.");
behauptenFalsch () -> num3%2 == 0, () ->"Ihr Wert ist eine gerade Zahl.");
}
Die sechs assertFalse()-Methoden in der testNotEvenNumbers()-Methode ergeben alle false, was bedeutet, dass die assertFalse()-Tests erfolgreich sind.
Die Vorteile von Unit-Tests
Unit Testing ist ein integraler Bestandteil des Softwareentwicklungsprozesses. Große Softwareprojekte scheitern aus verschiedenen Gründen, von den Teams, die daran arbeiten, bis hin zu Entwicklungsansätzen.
Der Zweck von Unit-Tests besteht darin, Softwarefehler durch eine frühzeitige Fehlererkennung zu beseitigen. Dies erfordert, dass Teams klare Spezifikationen entwickeln, das Softwaredesign durch Fehlerdokumentation verbessern und Unterstützung bei der Softwarewartung leisten.
Unit-Tests sind nicht der einzige Software-Testansatz, den Sie in Ihrem Entwicklungslebenszyklus anwenden sollten, es ist einfach ein sehr guter Ausgangspunkt.