Wie kann ich mit Mockito Abschlussklassen in Java simulieren?
Endgültige Klassen mit Mockito verspotten
Im Bereich des Java-Testens ist das Verspotten nicht endgültiger Klassen eine gängige Praxis, um Abhängigkeiten zu isolieren und zu testen Code in einer kontrollierten Umgebung. Abschlussklassen stellen jedoch eine besondere Herausforderung dar, wenn es um das Verspotten geht.
Betrachten wir zum Beispiel das folgende Beispiel:
public final class RainOnTrees { public void startRain() {} } public class Seasons { RainOnTrees rain = new RainOnTrees(); public void findSeasonAndRain() {rain.startRain();} }
In diesem Szenario haben wir eine Abschlussklasse namens RainOnTrees und eine Klasse Jahreszeiten, die davon abhängt. Um Seasons effektiv zu testen, müssen wir RainOnTrees verspotten. Allerdings ist das Verspotten von Abschlussklassen mit Mockito Version 1 grundsätzlich nicht möglich.
Mockito Inline zur Rettung
Um diese Einschränkung zu überwinden, führte Mockito Version 2 das Mockito-Inline ein Paket, das das Verspotten statischer und endgültiger Klassen, einschließlich Konstruktoren, ermöglicht. Um diese Funktion zu nutzen, fügen Sie die folgende Abhängigkeit zu Ihrer Gradle-Datei hinzu:
testImplementation 'org.mockito:mockito-inline:2.13.0'
Mocking mit Mockito Inline
Sobald das Mockito-Inline-Paket hinzugefügt wurde, ist Mockito endgültig Der Unterricht wird unkompliziert:
@ExtendWith(MockitoExtension.class) public class SeasonsTest { @Mock RainOnTrees rainMock; @BeforeEach public void setUp() { MockitoAnnotations.initMocks(this); } @Test public void testFindSeasonAndRain() { Seasons seasons = new Seasons(); // Inject the mock into the Seasons class ReflectionTestUtils.setField(seasons, "rain", rainMock); seasons.findSeasonAndRain(); // Verify that the mocked method was called Mockito.verify(rainMock).startRain(); } }
Abschluss Hinweise
Es ist wichtig zu beachten, dass verspottete Abschlussklassen mit Bedacht eingesetzt werden sollten, da dies zu fragilen Tests führen kann, die möglicherweise fehlschlagen, wenn sich die Implementierung der Abschlussklasse ändert. Wenn möglich, ist das Erstellen nicht endgültiger Klassen für die Abhängigkeitsinjektion ein bevorzugter Testansatz.
Das obige ist der detaillierte Inhalt vonWie kann ich mit Mockito Abschlussklassen in Java simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

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











Fehlerbehebung und Lösungen für die Sicherheitssoftware des Unternehmens, die dazu führt, dass einige Anwendungen nicht ordnungsgemäß funktionieren. Viele Unternehmen werden Sicherheitssoftware bereitstellen, um die interne Netzwerksicherheit zu gewährleisten. ...

Lösungen zum Umwandeln von Namen in Zahlen zur Implementierung der Sortierung in vielen Anwendungsszenarien müssen Benutzer möglicherweise in Gruppen sortieren, insbesondere in einem ...

Die Verarbeitung von Feldzuordnungen im Systemdocken stößt häufig auf ein schwieriges Problem bei der Durchführung von Systemdocken: So kartieren Sie die Schnittstellenfelder des Systems und ...

Bei Verwendung von MyBatis-Plus oder anderen ORM-Frameworks für Datenbankvorgänge müssen häufig Abfragebedingungen basierend auf dem Attributnamen der Entitätsklasse erstellt werden. Wenn Sie jedes Mal manuell ...

Beginnen Sie den Frühling mit der Intellijideaultimate -Version ...

Konvertierung von Java-Objekten und -Arrays: Eingehende Diskussion der Risiken und korrekten Methoden zur Konvertierung des Guss-Typs Viele Java-Anfänger werden auf die Umwandlung eines Objekts in ein Array stoßen ...

Detaillierte Erläuterung des Designs von SKU- und SPU-Tabellen auf E-Commerce-Plattformen In diesem Artikel werden die Datenbankdesignprobleme von SKU und SPU in E-Commerce-Plattformen erörtert, insbesondere wie man mit benutzerdefinierten Verkäufen umgeht ...

Wie erkennt die Redis -Caching -Lösung die Anforderungen der Produktranking -Liste? Während des Entwicklungsprozesses müssen wir uns häufig mit den Anforderungen der Ranglisten befassen, z. B. das Anzeigen eines ...
