Schreiben von Testable Java Code mit Junit 5 und Mockito
Jul 28, 2025 am 03:24 AMSchreiben Sie Testsable-Code mit Abh?ngigkeitsinjektion, um eine lose Kopplung zu erm?glichen, wie durch Ersetzen fest codierter Abh?ngigkeiten durch injizierte injizierte ersetzt wird. 2. Verwenden Sie JUNIT 5 für strukturierte Tests mit Funktionen wie @Beforeach, @test und AssertThrows, um saubere, lesbare und zuverl?ssige Tests zu gew?hrleisten. 3.. Mock Externe Abh?ngigkeiten mit Mockito unter Verwendung von Mock (), wenn (). Thenreturn () und verifizieren (), um das Verhalten zu isolieren und die Abh?ngigkeit von realen Systemen zu vermeiden; 4. Befolgen Sie die Best Practices wie beschreibende Testnamen, das AAA-Muster, die Vermeidung von Implementierungsdetail-Tests, das Beibehalten von Tests unabh?ngig, nicht zu übermaschigen und die Kantenf?lle abdecken, um die Wartungs- und effektive Tests sicherzustellen. Letztendlich verbessert das Design für Testbarkeit die Codequalit?t und erleichtert es, sich zu ?ndern, zu debuggen und zu vertrauen.
Das Schreiben eines pünktlichen Java -Codes ist eine kritische F?higkeit, um wartbare, robuste Anwendungen aufzubauen. Mit Junit 5 als moderner Test -Framework und Mockito für verspottete Abh?ngigkeiten k?nnen Sie saubere, zuverl?ssige Einheitstests schreiben, die das Verhalten überprüfen, ohne sich auf externe Systeme zu verlassen. Hier erfahren Sie, wie Sie Ihren Code und Ihre Tests effektiv strukturieren k?nnen.

1. Schreiben Sie Testable Code: Abh?ngigkeitsinjektion und lose Kopplung
Die Grundlage für Testsable Code ist die Abh?ngigkeitsinjektion (DI) und eine lose Kopplung . Vermeiden Sie hartcodierte Abh?ngigkeiten oder statische Anrufe, die Tests erschweren.
Schlechtes Beispiel (schwer zu testen):

?ffentliche Klasse orderService { privater E -MailService -E -MailService = neuer E -MailService (); // Harte Abh?ngigkeit public void prozess (order order) { // Logik E -MailService.SendConfirmation (Order); } }
Dieses eng mit EmailService
OrderService
, was es unm?glich macht, process()
zu testen (), ohne tats?chlich E -Mails zu senden.
Guter Ansatz (Testbar mit DI):

?ffentliche Klasse orderService { privater endgültiger E -Mail -Service -E -Mail -Service; public orderService (E -MailService Emailservice) { this.emailService = mailservice; } public void prozess (order order) { // Gesch?ftslogik E -MailService.SendConfirmation (Order); } }
Jetzt k?nnen Sie w?hrend des Tests einen verspotteten EmailService
mit Mockito injizieren.
2. Verwenden Sie JUNIT 5 für strukturierte, lesbare Tests
Junit 5 bietet eine moderne Syntax mit verbessertem Lebenszyklusmanagement und ausdrucksstarken Behauptungen.
Beispiel Testklasse:
import org.junit.jupiter.api.*; statische org.mockito.mockito importieren.*; importieren statische org.junit.jupiter.api.asserions.*; @Testinstance (testinstance.lifecycle.per_method) Klasse orderServicetest { privater E -Mail -Service -E -Mail -Service; privater ordnerservice orderservice; @Beforeach void setup () { EmailService = Mock (EmailService.Class); orderService = new orderService (E -MailService); } @Prüfen @DisplayName ("Sollte Best?tigungs -E -Mails bei der Verarbeitung der Bestellung senden")) void samsendemailonProcess () { // gegeben Bestellauftrag = Neue Bestellung ("123", 100,0); // Wann OrderService.Process (Order); // Dann überprüfen (E -MailService, Zeiten (1)). SendConfirmation (Order); } @Prüfen @DisplayName ("sollte eine Ausnahme für Null Order") void SHOFTThrowExceptionFornullOrder () { // wenn & dann Assertthrows (illegalArgumentException.class, () -> { OrderService.Process (NULL); }); } }
Key JUNIT 5 -Funktionen verwendeten Funktionen:
-
@BeforeEach
- L?uft vor jedem Test (sauberer Zustand) -
@Test
- Marks -Testmethoden -
@DisplayName
- Verbessert die Lesbarkeit in Testberichten -
assertThrows
- überprüft die erwarteten Ausnahmen -
verify()
- überprüft die Interaktion mit Mocks
3. Mockabh?ngigkeiten mit Mockito
Mit Mockito k?nnen Sie externe Dienste (z. B. Datenbanken, APIs, E -Mail) simulieren, damit Ihre Unit -Tests schnell laufen und das Verhalten isolieren.
Gemeinsame Mockito -Muster:
- Mock -Kreation:
mock(ClassName.class)
- Stubbing -Methoden:
when(mock.method()).thenReturn(value)
- überprüfung der Interaktionen:
verify(mock).method()
Beispiel: Stubieren eines Repository -Aufrufs
Public Class Userservice { private endgültige USERRepository userrepository; public userservice (userrepository userrepository) { this.userrepository = userrepository; } ?ffentlicher Benutzer findUserById (String -ID) { Rückgabe ustErrepository.findbyId (ID) .Orelsethrow (() -> Neue BenutzernotFoundException ("Benutzer nicht gefunden"); } }
Test mit Mockito:
@Prüfen @DisplayName ("sollte Benutzer zurückgeben, wenn es in Repository gefunden wird") void shudrikturnuserwhenfound () { // gegeben UserRepository userrepository = mock (userRepository.class); Benutzer Mockuser = neuer Benutzer ("1", "Alice"); wenn (userRepository.findbyId ("1")). thenreturn (optional.of (Mockuser)); UserService userService = new UserService (userRepository); // Wann Benutzerergebnis = UserService.FinduserById ("1"); // Dann AssertEquals ("Alice", result.getName ()); verifizieren (userRepository) .findbyId ("1"); }
Sie testen nur die Logik in UserService
, nicht in der realen Datenbank.
4. Best Practices für saubere, wartenbare Tests
Befolgen Sie diese Richtlinien, um Ihre Tests effektiv zu halten:
Verwenden Sie beschreibende Testnamen
BevorzugtshouldThrowExceptionWhenOrderIsNull()
übertestProcess()
.Folgen Sie AAA -Muster
Organisieren Sie Tests in die Klarheit, um Bl?cke zu arrangieren , zu veranstalten , blockieren .Vermeiden Sie die Testen von Implementierungsdetails
Testen Sie , was die Methode tut, nicht wie sie es macht. überprüfen Sie keine internen privaten Methoden.Halten Sie die Tests unabh?ngig und schnell
Kein gemeinsamer Zustand zwischen Tests. Verwenden Sie stattdessen@BeforeEach
oder Factory -Methoden.Nicht zu übermenschen
Nur scheinige externe Abh?ngigkeiten. Verspottete Objekte oder einfache Versorgungsunternehmen nicht.Testkantenf?lle
Nulleing?nge, leere Sammlungen, Ausnahmen - Dies sind h?ufige Fehlerpunkte.
Letzte Gedanken
Beim Schreiben eines Testsable Java Code geht es nicht nur darum, Tests hinzuzufügen, sondern dass Sie Ihre Klassen unter Berücksichtigung von Testbarkeit entwerfen . Verwenden Sie die Abh?ngigkeitsinjektion, bevorzugen die Zusammensetzung w?hrend der Instanziierung und trennen Sie die Bedenken sauber.
Mit Junit 5 und Mockito erhalten Sie leistungsstarke Werkzeuge zu:
- Schreiben Sie ausdrucksstarke, lesbare Tests
- Verhaltenseinheiten isolieren
- Die Abh?ngigkeiten sicher simulieren
Das Ergebnis? Code, der einfacher zu ?ndern, zu debuggen und zu vertrauen ist.
Wenn Sie es nicht leicht testen k?nnen, überdenken Sie das Design.
Das obige ist der detaillierte Inhalt vonSchreiben von Testable Java Code mit Junit 5 und Mockito. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen





Annotationen des Mockito-Frameworks vereinfachen den Stub-Generierungs- und Verifizierungsprozess: @Mock: Automatisches Generieren und Verwalten von Scheinobjekten. @Captor: Erfassen Sie den an die Mock-Methode übergebenen Parameterwert. @InjectMocks: Scheinobjekte automatisch in die zu testende Klasse einfügen. @Spy: Erstellen Sie einige Stub-Objekte und behalten Sie die ursprüngliche Methodenimplementierung bei.

Mit der Popularit?t des Internets ist die Java-Back-End-Entwicklung zu einem wichtigen Bereich geworden. Im Entwicklungsprozess ist Unit-Test ein sehr wichtiger Schritt, und Mockito ist ein hervorragendes API-Unit-Test-Simulationstool. In diesem Artikel wird die Verwendung von Mockito in der Java-Backend-Entwicklung vorgestellt. Was ist Mockito? Mockito ist ein Java-Framework, das Simulationsfunktionen für API-Unit-Tests in Form von Mock-Objekten bereitstellt. Scheinobjekte beziehen sich auf einige virtuelle Objekte, deren Verhalten von uns festgelegt wird

Einführung RESTful APIs erfreuen sich immer gr??erer Beliebtheit, daher ist die Sicherstellung ihrer Robustheit von entscheidender Bedeutung. Unit-Tests sind eine effektive M?glichkeit, die Funktionalit?t und das Verhalten Ihres Codes zu überprüfen, insbesondere für RESTful-APIs. In diesem Artikel wird erl?utert, wie Sie JAX-RS und Unit-Testing-Frameworks wie Mockito und RESTAssured zum Testen von RESTful-Code verwenden. Einführung in JAX-RS JAX-RS ist eine Java-API zum Erstellen von RESTful-APIs. Es bietet eine Reihe von Anmerkungen und Klassen zum Definieren von Ressourcen und zum Verarbeiten von HTTP-Anfragen und -Antworten. Mithilfe von JAX-RS k?nnen Entwickler problemlos RESTful-Dienste erstellen, die mit einer Vielzahl von Clients kommunizieren k?nnen. Ger?tetest

Einführung in Mockito Beim Aufrufen einer Methode eines Scheinobjekts wird nicht die eigentliche Methode ausgeführt, sondern der Standardwert des Rückgabetyps, z. B. object gibt null zurück, int gibt 0 zurück usw. Andernfalls wird die Methode durch Angabe von when angegeben (Methode).thenReturn(value) Rückgabewert. Gleichzeitig kann das Scheinobjekt verfolgt werden und mithilfe der Verifizierungsmethode festgestellt werden, ob es aufgerufen wurde. Das Spionageobjekt führt standardm??ig die eigentliche Methode aus und der Rückgabewert kann durch when.thenReturn überschrieben werden. Es ist ersichtlich, dass Mock für andere Tests praktisch ist, solange es die Ausführung einiger Methoden vermeidet und den angegebenen Wert direkt zurückgibt. Servicetestf?lle erfordern Abh?ngigkeiten junitjunit4.1

Mockito und JUnit bündeln ihre Kr?fte, um die Effizienz von Unit-Tests zu verbessern: Mockito erm?glicht die Erstellung von Test-Stubs und Scheinobjekten, um die erwarteten Interaktionen des Codes zu überprüfen. JUnit bietet ein Framework, um das Schreiben und Ausführen von Tests zu vereinfachen. Bei gemeinsamer Verwendung k?nnen Sie gut lesbare und wartbare Tests erstellen, die die Korrektheit Ihres Codes effektiv überprüfen.

Schritte zum Testen von Java-Funktionen mit Mockito: Mockito-Abh?ngigkeiten hinzufügen. Erstellen Sie Scheinobjekte und legen Sie Scheinverhalten fest. Rufen Sie die zu testende Funktion auf. Best?tigen Sie das erwartete Verhalten einer Funktion. Verwenden Sie verify(), um simulierte Interaktionen zu überprüfen.

Da die Softwareentwicklung immer weiter voranschreitet, ist die testgetriebene Entwicklung (TDD) zu einem immer beliebter werdenden Entwicklungsmodell geworden. Im TDD-Prozess wird das Testen zum Kern des Entwicklungsprozesses, und JUnit und Mockito sind zwei h?ufig verwendete Test-Frameworks. Wie verwendet man in der PHP-Entwicklung JUnit und Mockito für TDD? Nachfolgend erfolgt eine ausführliche Einführung. 1. Einführung in JUnit und Mockito JUnit ist ein Testframework für die Java-Sprache. Es kann Java helfen

Einführung JUnit ist ein Open-Source-Framework für Unit-Tests von Java-Code, das 1997 von Erich Gamma und Kent Beck gegründet wurde. Es erm?glicht Entwicklern, Testf?lle zu schreiben, die die Korrektheit ihres Codes überprüfen. Durch Unit-Tests k?nnen Entwickler sicherstellen, dass der Code auf der Ebene der einzelnen Einheiten wie erwartet funktioniert, und so die Robustheit und Zuverl?ssigkeit des Codes verbessern. Grundlegende Verwendung Ein JUnit-Testfall ist eine mit @Test annotierte Methode, die normalerweise mit test beginnt. Es enth?lt die folgenden Teile: Setup: Setzen Sie in der @Before-Methode den erforderlichen Status für jeden Testfall. Test: Führen Sie in der @Test-Methode die zu testende Logik aus und überprüfen Sie die Ergebnisse. Bereinigung: In der @After-Methode, in jedem Testfall
