Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Erstellen von Unit-Tests | Unit Tests
Java JUnit Bibliothek. Arten von Tests
course content

Kursinhalt

Java JUnit Bibliothek. Arten von Tests

Java JUnit Bibliothek. Arten von Tests

1. Testen in der Entwicklung
2. Unit Tests
3. Ausnahmen

book
Erstellen von Unit-Tests

Lassen Sie uns mit etwas praktischer Übung beginnen und endlich Unit-Tests schreiben mit der JUnit-Bibliothek. Wir werden die nicht so komplexe Methode filterAndSortPalindromes testen, die nur die Strings zurückgibt, die Palindrome sind (vorwärts und rückwärts gleich gelesen) und sie dann nach length in absteigender Reihenfolge sortiert. Eine Klasse mit einer solchen Methode sieht folgendermaßen aus:

Hinweis

Bitte beachten Sie, dass wir in diesem Kurs ausschließlich einen funktionalen STIL des Testens verwenden, den wir mit Unit Testing durchführen werden.

Hier verwenden wir die Stream-API, um eine Liste von Zeichenfolgen zu verarbeiten. Wir haben auch eine zusätzliche Methode isPalindrome geschrieben, die überprüft, ob eine Zeichenfolge ein Palindrom ist. Anschließend sortieren wir die Zeichenfolgen in absteigender Reihenfolge ihrer Länge, um strukturierte Informationen zu erhalten.

Was uns jedoch interessiert, ist nicht das Funktionieren dieser Methode selbst, sondern ihr Testen.

Zuerst müssen wir eine Testdatei erstellen für diese Methode, und das wird wie folgt gemacht:

Das erste, was Sie bemerken können, ist die "@Test"-Annotation. Wir verwenden diese Annotation, um Methoden zu kennzeichnen, die Unit-Tests sind. In unserem Fall ist die Methode filterAndSortPalindromes mit dieser Annotation markiert und dient als Test. Sie sollten eine solche Annotation auf jede Methode anwenden, die ein Unit-Test ist.

Was uns interessiert, ist genau, wie wir es testen werden:

Das Erste, was wir tun müssen, ist den Algorithmus der Aktionen zu verstehen. Es ist hier ziemlich einfach. Wir haben zwei Parameter: "actual" und "expected". "actual" wird das Ergebnis der Ausführung der Methode speichern, während "expected" das erwartete Ergebnis der Methode speichern wird.
Zum Beispiel, lassen Sie uns eine Testeingabe für den Test in Form einer Liste von Zeichenfolgen schreiben:

Diese Liste enthält Zeichenfolgen, von denen einige Palindrome sind.

Die Methode sollte diese Liste so sortieren, dass nur Palindrome darin verbleiben und sie auch in absteigender Reihenfolge nach Länge sortieren. Mit anderen Worten, das erwartete Ergebnis nach der Verwendung der Methode ist eine Liste: ""radar", "level", "madam"."

Lassen Sie uns eine "expected"-Liste mit diesen Werten erstellen:

Als nächstes müssen wir eine "actual"-Liste erstellen. Diese Liste wird diejenige sein, die von der Methode zurückgegeben wird, nachdem sie ihre Operation erfolgreich abgeschlossen hat. Die Arbeit mit dieser Liste ist einfach; wir weisen ihr einfach das Ergebnis der Methode zu, die mit dem "input"-Parameter ausgeführt wurde.

Nun haben wir Listen zum Vergleich. Um die Methode zu testen, muss die "actual"-Liste identisch sein mit der "expected"-Liste. Um dies zu erreichen, können wir den Befehl "assertEquals" verwenden, der zwei Objekte vergleicht, und wenn sie gleich sind, besteht der Test erfolgreich.

Hinweis

Im JUnit-Framework gibt es viele verschiedene Assertions, wie "equals". Später im Kurs werden wir auch einige davon behandeln.

Großartig, der Unit-Test ist bereit, jetzt bleibt nur noch, ihn auszuführen:

Also, wir haben einen Unit-Test für unsere Methode geschrieben. Aber Sie erinnern sich, dass wir nicht nur einen Test erstellen müssen, sondern einen Unit-Test für jeden der Fälle. Daher werden wir im nächsten Kapitel auch andere Testfälle für diese Methode implementieren.

Unit-Testing ist nicht kompliziert, kann aber zeitaufwändige Arbeit sein, da Sie Zeit damit verbringen, Testfälle zu überlegen und sie auszuarbeiten.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 3
We're sorry to hear that something went wrong. What happened?
some-alt