Kursinhalt
Java JUnit Bibliothek. Arten von Tests
Java JUnit Bibliothek. Arten von Tests
Wie Man `Void`-Methoden Testet
Der Algorithmus zum Schreiben von Unit-Tests ist uns klar. Zuerst geben wir die input
an, dann das expected
Ergebnis und schließlich das actual
Ergebnis, das von der zu testenden Methode zurückgegeben wird. Aber es stellt sich die Frage, wie man Methoden testet, die nichts zurückgeben?
Das Testen von void
-Methoden kann ein herausfordernder Prozess sein, da wir den Rückgabewert nicht testen können. Allerdings ändern void-Methoden oft den Zustand eines Objekts, sodass wir ihre Funktionalität auf diese Weise testen können.
Zähler
Lassen Sie uns eine void
-Methode schreiben, mit der wir arbeiten werden; es wird eine einfache Methode sein, die einen Wert erhöht ( ja, Java hat bereits eine solche Methode, aber ich denke, diese Methode wird ein ausgezeichnetes Beispiel für Tests sein ):
Counter
public class Counter { private int count = 0; public void increment() { count++; } public int getCount() { return count; } }
Oben sehen Sie die Counter
-Klasse, die eine increment
-Methode enthält und eine Variable namens count
speichert. Wenn wir beispielsweise etwas zählen müssen, können wir einfach diese Methode mit dem Konstrukt Counter.increment()
aufrufen, und die private Variable count
wird erhöht.
Tests erstellen
Zuerst müssen wir eine Instanz dieser Klasse erstellen und dann die void
-Methode auf dieser Instanz verwenden.
Als nächstes überprüfen wir einfach, ob dieses Element nicht gleich null ist, und wenn es das nicht ist, bedeutet das, dass die Methode erfolgreich funktioniert hat und die Variable inkrementiert wurde. So wird der erste Unit-Test aussehen:
Wie Sie sehen können, haben wir den Algorithmus befolgt, und dann überprüfen wir den erwarteten Zustand des counter
-Objekts.
Nach einer Inkrementierung hat das Objekt seinen Wert auf +1
geändert, daher sollte es gleich eins sein, und genau das überprüfen wir.
Das Einzige, was noch zu überprüfen ist, ist, wenn wir mehrfach inkrementieren. Schreiben wir zum Beispiel einen Unit-Test, bei dem wir die Variable count
mehrmals inkrementieren und die Genauigkeit des Ergebnisses überprüfen:
Hier erstellen wir ebenfalls ein neues Objekt und rufen die Methode increment()
dreimal auf. Dann vergleichen wir das Ergebnis mit 3, um zu testen, ob die Methode korrekt funktioniert.
Testoptimierung
Diese Tests können auch durch die Verwendung der @BeforeEach
Annotation und das Erstellen eines Counter
Objekts zu Beginn des Tests optimiert werden.
So können Sie es machen:
Auf diese Weise können wir die Erstellung des counter
-Objekts aus jedem Unit-Test eliminieren, da es jetzt automatisch erstellt wird. Hier ist der endgültige Code für das Unit-Testing der void increment()
-Methode:
Im nächsten Kapitel werden wir die verschiedenen Arten von Assertions besprechen und wie man jede von ihnen verwendet.
Danke für Ihr Feedback!