Test Driven Development (TDD) ist eine Softwareentwicklungsmethode, bei der Tests vor dem eigentlichen Code geschrieben werden. TDD hat aufgrund seines Schwerpunkts auf Codequalität und Wartbarkeit große Aufmerksamkeit erlangt. In diesem Artikel wird untersucht, wie man TDD mithilfe von JUnit5 und Mockito, zwei leistungsstarken Frameworks im Java-Ökosystem, effektiv implementiert.
Testgetriebene Entwicklung (Testgetriebene Entwicklung) ist ein iterativer Entwicklungsprozess. Entwickler schreiben zunächst Testfälle für neue Funktionen oder Features, schreiben dann die Mindestmenge an Code, um den Test zu bestehen, und überarbeiten den Code schließlich zur Optimierung. Dieser Ansatz verbessert das Design, reduziert Fehler und verbessert die allgemeine Wartbarkeit des Codes.
JUnit5 ist die neueste Version von JUnit, einem weit verbreiteten Unit-Testing-Framework in Java. Es führt mehrere neue Funktionen und Verbesserungen ein, die das Testen in Java einfacher und flexibler machen.
Mockito hingegen ist ein Mocking-Framework zum Erstellen von Scheinobjekten und zum Definieren ihres Verhaltens, das zum Testen von Code mit externen Abhängigkeiten nützlich ist.
Der erste Schritt bei TDD besteht darin, einen Test zu schreiben, der fehlschlägt. Zu diesem Zweck definieren wir in JUnit5 eine mit @Test -
annotierte Methodeimport org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class ExampleTest { @Test void shouldReturnTrueWhenNumberIsEven() { Example example = new Example(); boolean result = example.isNumberEven(3); assertTrue(result); } }
Dieser Test wird zunächst fehlschlagen, da wir die isNumberEven-Methode nicht in der Beispielklasse implementiert haben.
Nach einem fehlgeschlagenen Test schreiben wir gerade genug Code, um den Test zu bestehen. Zum Beispiel -
class Example { boolean isNumberEven(int num) { return num % 2 == 0; } }
Führen Sie den Test erneut aus und wir sollten sehen, dass der Test bestanden wird, da die Methode isNumberEven jetzt korrekt prüft, ob eine Zahl gerade ist.
Der letzte Schritt besteht darin, den Code zu verfeinern und zu optimieren, ohne sein Verhalten zu ändern. Obwohl unser Beispiel sehr einfach ist und möglicherweise kein Refactoring erfordert, kann dieser Schritt in komplexeren Fällen die Reduzierung der Redundanz, die Verbesserung der Lesbarkeit oder die Optimierung der Leistung umfassen.
Die chinesische Übersetzung vonVerwenden Sie Mockito, um Scheinobjekte zu erstellen, wenn die zu testende Methode externe Abhängigkeiten beinhaltet. Dadurch können Methoden isoliert getestet werden −
import org.junit.jupiter.api.Test; import org.mockito.Mockito; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; class ExampleTest { @Test void shouldCallDependency() { // Arrange Dependency dependency = Mockito.mock(Dependency.class); Example example = new Example(dependency); // Act example.performAction(); // Assert verify(dependency, times(1)).action(); } }
In diesem Test erstellen wir ein simuliertes Abhängigkeitsobjekt und überprüfen, ob die Aktionsmethode einmal aufgerufen wird, wenn wir die performAction-Methode für das Beispielobjekt aufrufen.
Testgetriebene Entwicklung bietet in Kombination mit JUnit5 und Mockito eine solide Grundlage für das Schreiben von qualitativ hochwertigem, wartbarem Code. Durch das Verständnis des TDD-Zyklus und die effektive Nutzung dieser Frameworks können Entwickler ihre Testfähigkeiten und Codequalität erheblich verbessern.
Das obige ist der detaillierte Inhalt vonTestgetriebene Entwicklung mit JUnit5 und Mockito. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!