亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Inhaltsverzeichnis
Warum Junit 5 Mockito verwenden?
1. Grundlegende Umweltkonstruktion
2. Verwenden Sie Mockito, um Abh?ngigkeitsobjekte zu simulieren
Schreiben Sie Testkurse
Schlüsselpunkte Beschreibung:
3. Verhaltensüberprüfung
4. Gehen Sie mit Ausnahmen und Randsituationen um
5. Tipps und Best Practices
Heim Java javaLernprogramm Einheitstests und Verspottung in Java mit Junit 5 und Mockito

Einheitstests und Verspottung in Java mit Junit 5 und Mockito

Jul 29, 2025 am 01:20 AM
java Unit -Tests

Verwenden Sie JUNIT 5 und Mockito, um Abh?ngigkeiten für Unit -Tests effektiv zu isolieren. 1. Erstellen Sie Mockobjekte über @Mock, @InjectMocks injizieren die getestete Instanz, @extendWith erm?glicht die Mockito -Erweiterung. 2. verwenden Sie, wenn (). Thatreturn (), um das Simulationsverhalten zu definieren, verifizieren (), um die Anzahl der Methodenaufrufe und Parameter zu überprüfen. 3. kann die Ausnahmszenarien simulieren und die Fehlerbehandlung überprüfen; 4.. Konstruktorinjektion empfehlen, übersimulierung vermeiden und die Testeratomizit?t beibehalten. 5. Verwenden Sie Assertall (), um Behauptungen zusammenzuführen, und @Nested organisiert Testszenarien, um die Wartbarkeit und Zuverl?ssigkeit der Tests zu verbessern.

Einheitstests und Verspottung in Java mit Junit 5 und Mockito

Unit -Tests und Verspottung sind wichtige Mittel, um die Codequalit?t in Java zu gew?hrleisten, und Junit 5 und Mockito sind die beliebteste Kombination von Testframeworks. Sie arbeiten zusammen, um die Gesch?ftslogik effizient zu isolieren, insbesondere für Szenarien, die auf externen Diensten, Datenbanken oder komplexen Objekten beruhen.

Einheitstests und Verspottung in Java mit Junit 5 und Mockito

Warum Junit 5 Mockito verwenden?

Junit 5 ist ein Mainstream -Test -Test -Framework in Java, das flexiblere Annotationsmodelle, Erweiterungsmechanismen und Behauptungsfunktionen bietet. Mockito ist ein leistungsstarkes Verspottungs -Framework, mit dem Sie "gef?lschte" Objekte erstellen und konfigurieren k?nnen, um reale Abh?ngigkeiten zu ersetzen und sich auf das Testen des Verhaltens von Zielklassen zu konzentrieren.

Wenn Sie die beiden kombinieren, k?nnen Sie:

Einheitstests und Verspottung in Java mit Junit 5 und Mockito
  • Isolieren Sie den getesteten Code aus externen Abh?ngigkeiten
  • überprüfen Sie die Anzahl der Methodenaufrufe und Parameter
  • Simulieren Sie Ausnahmen und Randbedingungen
  • Verbesserung der Testwartbarkeit und Ausführungsgeschwindigkeit der Tests

1. Grundlegende Umweltkonstruktion

Stellen Sie zun?chst sicher, dass das Projekt jungit 5 und Mockito -Abh?ngigkeiten einführt. Wenn Sie Maven verwenden, fügen Sie pom.xml Folgendes hinzu:

 <Depecies>
    <!-jungit 5->
    <De vorangehen>
        <gruppe> org.junit.jupiter </Groupid>
        <artifactid> junit-jupiter </artifactid>
        <version> 5.10.0 </Version>
        <Schops> Test </Scope>
    </abh?ngig>

    <!-Mockito->
    <De vorangehen>
        <CruupId> org.mockito </gruppeId>
        <artifactid> mockito-core </artifactid>
        <version> 5.7.0 </Version>
        <Schops> Test </Scope>
    </abh?ngig>

    <!-Mockito Junit Jupiter-Unterstützung (optional, zur automatischen Initialisierung von @mock Annotation verwendet)->
    <De vorangehen>
        <CruupId> org.mockito </gruppeId>
        <artifactid> Mockito-Junit-Jupiter </artifactid>
        <version> 5.7.0 </Version>
        <Schops> Test </Scope>
    </abh?ngig>
</Abh?ngigkeiten>

Verwenden Sie au?erdem eine Build -Konfiguration, die JUNIT 5 unterstützt (z. B. SureFire Plugin -Version> = 2.22.0).

Einheitstests und Verspottung in Java mit Junit 5 und Mockito

2. Verwenden Sie Mockito, um Abh?ngigkeitsobjekte zu simulieren

Nehmen wir an, wir haben einen Bestellservice OrderService , der auf einer Payment Gateway PaymentGateway -Schnittstelle beruht:

 public interface paymentgateway {
    Boolesche Gebühr (Doppelbetrag);
}

?ffentliche Klasse orderService {
    private endgültige Paymentgateway Paymentgateway;

    public orderService (paymentgateway paymentgateway) {
        this.Paymentgateway = paymentGateway;
    }

    public boolean ProcessOrder (doppelte Menge) {
        if (Betrag <= 0) return false;
        Return PaymentGateway.Chode (Betrag);
    }
}

Wir m?chten OrderService.processOrder() testen, m?chten aber das Zahlungssystem nicht anrufen. Zu diesem Zeitpunkt k?nnen Sie Mockito verwenden, um einen simulierten PaymentGateway zu erstellen.

Schreiben Sie Testkurse

 import org.junit.jupiter.api.test;
import org.mockito.injectmocks;
import org.mockito.mock;
importieren statische org.junit.jupiter.api.asserions.*;
statische org.mockito.mockito importieren.*;

Klasse orderServicetest {

    @Verspotten
    private paymentgateway paymentgateway;

    @InjectMocks
    privater ordnerservice orderservice;

    // muss mit Mockitoextension zusammenarbeiten, um @Mock und @injectMocks automatisch zu initialisieren
    @org.junit.jupiter.api.extesion
    Statische Klasse verschachtelt {}

    @Prüfen
    void shartreturnfalse_whenamountisinvalid () {
        // rufen Sie die zum test booleschen Ergebnis = orderService.ProcessOrder (-100) an;

        // Assert Ergebnis AssertFalse (Ergebnis);

        // überprüfen Sie, ob das Zahlungsgateway nicht bezeichnet wird (PaymentGateway, Ever ()). Gebühr (AnyDouble ());
    }

    @Prüfen
    void shartReturntrue_whenPaymentsucpesS () {
        // Simulation des Abh?ngigkeitsverhaltens, wenn (paymentgateway.charge (100.0)). Thatreturn (true);

        // boolean result = orderService.ProcessOrder (100,0) ausführen;

        // Assert AssertRue (Ergebnis);
        überprüfen (paymentgateway) .charge (100,0);
    }

    @Prüfen
    void shartReturnFalse_WenPaymentFails () {
        wenn (paymentgateway.charge (100.0)). threeturn (falsch);

        boolean result = orderService.ProcessOrder (100,0);

        AssertFalse (Ergebnis);
        überprüfen (paymentgateway) .charge (100,0);
    }
}

Schlüsselpunkte Beschreibung:

  • @Mock : Erstellen Sie ein Mock -Objekt (Mock)
  • @InjectMocks : Erstellen Sie eine Zielklasseninstanz und injizieren Sie automatisch die @Mock -markierten Felder (durch Konstruktor- oder Feldinjektion)
  • @ExtendWith(MockitoExtension.class) : Aktivieren Sie die Jungit -Erweiterung von Mockito, um Annotationen automatisch zu initialisieren
  • when(...).thenReturn(...) : Definieren Sie den Rückgabewert der Simulationsmethode
  • verify(...) : überprüfen Sie, ob eine Methode aufgerufen wurde, sowie die Anzahl der Anrufe, Parameter usw.

3. Verhaltensüberprüfung

Zus?tzlich zur Behauptung des Rückgabewerts k?nnen Sie überprüfen, ob die Methode korrekt aufgerufen wird. Zum Beispiel:

 @Prüfen
void sollteePedarchExactlyonce () {
    wenn (paymentgateway.charge (50.0)). thsedReturn (true);

    orderService.ProcessOrder (50,0);

    // Stellen Sie sicher, dass die Ladungsmethode einmal aufgerufen wird und der Parameter 50.0 betr?gt
    überprüfen (paymentgateway, Zeiten (1)). Gebühr (Gleichung (50,0));
}

Andere gemeinsame Verifizierungsmethoden:

  • never() : Nie gerufen
  • atLeastOnce() : mindestens einmal
  • timeout(100) : Innerhalb einer bestimmten Zeit aufgerufen (für asynchron)
  • inOrder(...) : überprüfen Sie die Anrufauftrag
 // Beispiel: überprüfen Sie die Anrufverordnung entschlüssig.
in Order.Verify (PaymentGateway). Gebühr (30.0);
in Order.Verify (PaymentGateway). Gebühr (20.0);

4. Gehen Sie mit Ausnahmen und Randsituationen um

Sie k?nnen die Ausnahmen von Mock -Objekten werfen und die Fehlerbehandlungslogik testen:

 @Prüfen
void sollte
    wenn (paymentgateway.charge (100.0)). Thenthrow (New RunTimeException ("Netzwerkfehler"));

    AssertThrows (runTimeException.class, () -> {
        orderService.ProcessOrder (100,0);
    });

    überprüfen (paymentgateway) .charge (100,0);
}

Sie k?nnen auch doThrow() verwenden, um mit doReturn() zusammenzuarbeiten, um mit void -Methoden oder speziellen Szenarien umzugehen.


5. Tipps und Best Practices

  • Vermeiden Sie eine Vereinfachung : Simulieren Sie nur Abh?ngigkeiten, die wirklich isoliert werden müssen, und simulieren Sie nicht den gesamten Link
  • Bevorzugte Konstruktorinjektion : Bei der Prüfung leicht zu übergebene Scheinobjekte
  • Testatomizit?t beibehalten : Ein Test best?tigt nur ein Verhalten
  • Batch -Behauptungen mit assertAll()
 @Prüfen
void multiPipasSerions () {
    wenn (paymentgateway.charge (100.0)). threeturn (true);

    boolean result = orderService.ProcessOrder (100,0);

    Assertall (
        () -> AssertRue (Ergebnis),
        () -> überprüfen (PaymentGateway). Gebühr (100.0)
    );
}
  • Verwenden Sie die @Nested Testklasse, um verschiedene Szenarien zu organisieren:
 @Nested
Klasse WENN AMOUNTISPOSITIVE {
    @Prüfen
    void SollderPaymentgateway () {...}
}

Grunds?tzlich ist das. Die Kombination von Junit 5 Mockito macht Java Unit Testing intuitiv und leistungsstark. Der Schlüssel besteht darin, "Testverhalten" zu verstehen und nicht "Testimplementierung" zu verstehen und Abh?ngigkeiten durch Mock zu steuern, um sicherzustellen, dass der Test schnell, stabil und wiederholbar ist.

Das obige ist der detaillierte Inhalt vonEinheitstests und Verspottung in Java mit Junit 5 und Mockito. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Laravel Lazy Loading gegen eifrige Beladung Laravel Lazy Loading gegen eifrige Beladung Jul 28, 2025 am 04:23 AM

Lazy Loading nur Abfragen beim Zugriff auf Assoziationen kann leicht zu N 1 -Problemen führen, was für Szenarien geeignet ist, in denen die zugeh?rigen Daten nicht festgelegt sind, ob sie ben?tigt werden. 2. Notfallbelastung verwendet mit () zum Laden der zugeordneten Daten im Voraus, um N 1 -Abfragen zu vermeiden, was für Stapelverarbeitungsszenarien geeignet ist. 3. Die Notfallbelastung sollte zur Optimierung der Leistung verwendet werden, und n 1 Probleme k?nnen durch Tools wie LaravelDebugbar erkannt werden, und das $ mit Attribut des Modells wird sorgf?ltig verwendet, um unn?tige Leistungsaufwand zu vermeiden.

Integration von PHP in Modelle für maschinelles Lernen Integration von PHP in Modelle für maschinelles Lernen Jul 28, 2025 am 04:37 AM

UsearestapitobridgephpandmlmodelsbyrunningThemodelinpythonviaplaskorfastapiandcallingitFrompusingCurlorguzzle.2.RunpythonScriptsDirectlyfrompusexec () orshell_exec () Forsimple, Low-TrafcuStates, und Low-Trafficusecases

Laravel Raw SQL Abfrage Beispiel Laravel Raw SQL Abfrage Beispiel Jul 29, 2025 am 02:59 AM

Laravel unterstützt die Verwendung nativer SQL -Abfragen, aber die Parameterbindung sollte bevorzugt werden, um die Sicherheit zu gew?hrleisten. 1. Verwenden Sie db :: select (), um Auswahlabfragen mit Parameterbindung auszuführen, um die SQL -Injektion zu verhindern. 2. Verwenden Sie db :: update (), um Aktualisierungsvorg?nge durchzuführen und die Anzahl der betroffenen Zeilen zurückzugeben. 3.. Verwenden Sie db :: Insert (), um Daten einzufinden. 4. Verwenden Sie db :: delete (), um Daten zu l?schen; 5. Verwenden Sie db :: Anweisung (), um SQL -Anweisungen ohne Ergebniss?tze wie Erstellen, Alter usw. auszuführen; 6. Es wird empfohlen, in QueryBuilder in der Lage zu verwenden, native Ausdrücke zur Verbesserung der Sicherheit zu kombinieren, um die Sicherheit zu verbessern

Reaktive Programmierung in Java mit Projektreaktor und Spring WebFlux Reaktive Programmierung in Java mit Projektreaktor und Spring WebFlux Jul 29, 2025 am 12:04 AM

Responsive Programming implementiert eine hohe Parallelit?t, nicht blockierende Dienste mit geringer Latenz in Java durch Projecreactor und Springwebflux. 1. ProjectorAtor bietet zwei Kerntypen: Mono und Fluss, unterstützt die deklarative Verarbeitung asynchroner Datenflüsse sowie Konvertiten, Filter und andere Operationen über Operatorketten; 2. Springwebflux basiert auf Reaktor und unterstützt zwei Programmiermodelle: Annotation und Funktion. Es l?uft auf nicht blockierenden Servern wie Netty und kann eine gro?e Anzahl von gleichzeitigen Verbindungen effizient verarbeiten. 3. Die Verwendung von WebFlux-Reaktor kann die Parallelit?tsfunktion und die Ressourcenauslastung in I/O-intensiven Szenarien verbessern und natürlich SSE und WebSO unterstützt.

Java -Authentifizierung und -autorisierung mit JWT Java -Authentifizierung und -autorisierung mit JWT Jul 29, 2025 am 12:07 AM

JWT ist ein offener Standard für die sichere übertragung von Informationen. In Java kann Authentifizierung und Autorisierung über die JJWT -Bibliothek erreicht werden. 1. Fügen Sie JJWT API, Impl und Jackson -Abh?ngigkeiten hinzu; 2. Erstellen Sie die JWTUTIL -Werkzeugklasse, um Token zu generieren, zu analysieren und zu überprüfen. 3.. Schreiben Sie JWTFilter -Abschnitte und überprüfen Sie BearerTokens im Autorisierungsheader. 4. Registrieren Sie den Filter im Springboot, um den angegebenen Pfad zu schützen; 5. Geben Sie eine Anmeldeschnittstelle an, um JWT zurückzugeben, nachdem Sie den Benutzer überprüfen. 6. Die geschützte Schnittstelle erh?lt die Benutzeridentit?t und -rolle durch Parsen des Tokens für die Zugriffskontrolle und realisiert letztendlich einen für verteilten Systeme geeigneten staatenlosen und erweiterbaren Sicherheitsmechanismus.

Gehen Sie mit Beispielgenerika Gehen Sie mit Beispielgenerika Jul 29, 2025 am 04:10 AM

Go Generics werden seit 1.18 unterstützt und zum Schreiben von generischen Code für Typ-Safe verwendet. 1. Die generische Funktion printslice [tany] (s [] t) kann Scheiben jeglicher Art drucken, z. B. [] int oder [] String. 2. Durch die Typenbeschr?nkungsnummer begrenzt t auf numerische Typen wie int und float, summe [tNumber] (Slice [] t) T Safe Summation wird realisiert. 3. Die generische Struktur -TypBox [tany] struct {valuet} kann jeden Typwert in Einklang bringen und mit dem NewBox [Tany] (VT)*Box [t] Constructor verwendet werden. 4. Set (vt) hinzufügen und () t () t zum Boxen [t] ohne boxen

CSS-Tabellen-Layout feste Beispiel CSS-Tabellen-Layout feste Beispiel Jul 29, 2025 am 04:28 AM

TABLE-LAYOUT: Behoben erzwingt die Tabellenspaltenbreite, die durch die Zellbreite der ersten Zeile bestimmt wird, um den Inhalt zu vermeiden, der das Layout beeinflusst. 1. Set Table-Layout: Behoben und geben Sie die Tabellenbreite an; 2. Setzen Sie das spezifische Verh?ltnis der Spaltenbreite für die erste Zeile th/td; 3. Verwenden Sie den wei?en Raum: Nowrap, überlauf: versteckt und textüberfluss: Ellipsis zum Steuerung des Textüberlaufs; 4. Für Hintergrundverwaltung, Datenberichte und andere Szenarien, die ein stabiles Layout und eine Hochleistungsrendern erfordern, die das Layout-Jitter effektiv verhindern und die Renderneffizienz verbessern k?nnen.

Einheitstests und Verspottung in Java mit Junit 5 und Mockito Einheitstests und Verspottung in Java mit Junit 5 und Mockito Jul 29, 2025 am 01:20 AM

Verwenden Sie JUNIT5 und Mockito, um Abh?ngigkeiten für Unit -Tests effektiv zu isolieren. 1. Erstellen Sie ein Mock -Objekt über @mock, @InjectMocks injizieren die getestete Instanz, @extendWith erm?glicht die Mockito -Erweiterung. 2. verwenden Sie, wenn (). Thatreturn (), um das Simulationsverhalten zu definieren, verifizieren (), um die Anzahl der Methodenaufrufe und Parameter zu überprüfen. 3. kann die Ausnahmszenarien simulieren und die Fehlerbehandlung überprüfen; 4.. Konstruktorinjektion empfehlen, übersimulierung vermeiden und die Testeratomizit?t beibehalten. 5. Verwenden Sie Assertall (), um Behauptungen zusammenzuführen, und @Nested organisiert die Testszenarien, um die Wartbarkeit und Zuverl?ssigkeit der Tests zu verbessern.

See all articles