Mockito Spy: Verspotten eine Methode in derselben Klasse Beispiel
Dieses Beispiel zeigt, wie die Funktionalität von Mockito verwendet wird, um eine bestimmte Methode innerhalb einer Klasse zu verspotten. Nehmen wir an, wir haben eine Klasse namens spy
: MyClass
public class MyClass { public int add(int a, int b) { return a + b + internalMethod(); } private int internalMethod() { return 5; // This is the method we want to isolate } public int anotherMethod() { return 10; } }Wir möchten die
-Methode testen, aber wir möchten nicht, dass das Ergebnis von der add
betroffen ist. Wir können einen Spion verwenden, um nur die internalMethod
: internalMethod
import org.junit.jupiter.api.Test; import org.mockito.Mockito; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.when; public class MyClassTest { @Test void testAddMethod() { MyClass myClassSpy = spy(MyClass.class); when(myClassSpy.internalMethod()).thenReturn(10); // Mock the internal method int result = myClassSpy.add(2, 3); assertEquals(15, result); // 2 + 3 + 10 = 15 } }In diesem Beispiel zu verspotten, erstellen wir einen Spion von
. Mit MyClass
stützen wir dann die when(myClassSpy.internalMethod()).thenReturn(10);
zurück, um 10 zurückzugeben, und isolieren sein Verhalten aus dem Test internalMethod
-Methode. Die Behauptung überprüft dann, dass die add
-Methode angesichts der verspotteten add
internalMethod
. Anschließend verwenden Sie die Methode von Mockito, um das Verhalten der Methoden anzugeben, die Sie verspotten möchten. Zum Beispiel: spy
wird ein Spionageobjekt spy
erstellt. Anrufe bei Mockito.spy(yourObject)
on when()
gibt 10 zurück. Alle anderen Methoden verwenden ihre reale Implementierung. Dies ermöglicht gezielte Testen des Verhaltens einer bestimmten Methode isoliert vom Rest der Klasse. Denken Sie daran, dass Sie
- unbeabsichtigte Nebenwirkungen: Da Spione die ursprüngliche Implementierung beibehalten, treten immer noch alle Nebenwirkungen der unmündlichen Methoden auf. Dies kann zu unerwartetem Verhalten während des Tests führen und es schwierig machen, die zu testende Einheit zu isolieren. Wenn
internalMethod
den Status des Objekts verändert, wird diese Änderung immer noch erfolgen, obwohl Sie seinen Rückgabewert verspottet haben. Ist es ein Problem mit der zu testenden Methode oder einem Nebeneffekt einer unmarkierten Methode? Änderungen in der Implementierung können Ihre Tests brechen, auch wenn die Funktionalität gleich bleibt. Das Verspotten ist im Allgemeinen einfacher und weniger anfällig für unerwartete Nebenwirkungen. Wählen Sie einen Spion, wenn: - Testen von Wechselwirkungen: Sie müssen die Wechselwirkungen zwischen der untersuchten Methode und den internen Methoden testen, und die internen Methoden haben signifikante Nebenwirkungen oder Abhängigkeiten, die nicht leicht verspottet werden können. Spott. Wenn möglich, ist es in der Regel eine bessere langfristige Lösung, Ihren Code zu überarbeiten, um es nachweisbarer zu machen, als sich auf Spione zu verlassen, um komplexe Abhängigkeiten oder Nebenwirkungen zu verarbeiten. Oft ermöglicht ein gut strukturiertes Design mit klarer Trennung von Bedenken einfachere und zuverlässigere Tests unter Verwendung von Mocks.
Das obige ist der detaillierte Inhalt vonMockito Spy: Verspottete eine Methode im selben Klassenbeispiel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

In diesem Artikel wird die Integration der funktionalen Programmierung in Java unter Verwendung von Lambda -Ausdrücken, Streams -API, Methodenreferenzen und optional untersucht. Es zeigt Vorteile wie eine verbesserte Lesbarkeit der Code und die Wartbarkeit durch SUKTIVE UND VERUSNAHMETALITÄT

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

In diesem Artikel werden die NIO-API von Java für nicht blockierende E/A erläutert, wobei Selektoren und Kanäle verwendet werden, um mehrere Verbindungen effizient mit einem einzelnen Thread zu verarbeiten. Es beschreibt den Prozess, die Vorteile (Skalierbarkeit, Leistung) und mögliche Fallstricke (Komplexität,

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

In diesem Artikel wird die Socket-API von Java für die Netzwerkkommunikation beschrieben, die das Setup des Client-Servers, die Datenbearbeitung und entscheidende Überlegungen wie Ressourcenverwaltung, Fehlerbehandlung und Sicherheit abdeckt. Es untersucht auch die Leistungsoptimierungstechniken, ich


Heiße KI -Werkzeuge

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

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

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

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

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung