„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann man private Methoden mit PowerMock und Mockito effektiv verspotten?

Wie kann man private Methoden mit PowerMock und Mockito effektiv verspotten?

Veröffentlicht am 08.11.2024
Durchsuche:562

How to Effectively Mock Private Methods with PowerMock and Mockito?

Alternative Lösung zum Verspotten privater Methoden mit PowerMock

Trotz der Schwierigkeiten mit der ursprünglich vorgeschlagenen Lösung mit PowerMock hat sich ein alternativer Ansatz als erfolgreich erwiesen. Mit einer Kombination aus Mockito und PowerMock ist es möglich, private Methoden effektiv zu verspotten.

Wie im bereitgestellten Codeausschnitt dargestellt, verfügt die Klasse CodeWithPrivateMethod über eine öffentliche Methode meaningPublicApi, die eine private Methode doTheGamble aufruft. Um das Verhalten von doTheGamble zu verspotten, nutzt die Testklasse CodeWithPrivateMethodTest PowerMock, um eine Instanz der Originalklasse auszuspionieren, und verwendet Mockito, um den gewünschten Rückgabewert anzugeben.

In diesem speziellen Szenario, wenn die private Methode doTheGamble aufgerufen wird Bei beliebigen String- und Integer-Argumenten wird die Anweisung gegeben, „true“ zurückzugeben. Dies führt dazu, dass die öffentliche Methode meaningPublicApi eine RuntimeException auslöst.

Die vollständige Testkonfiguration wird durch die Annotation @PrepareForTest von PowerMock erreicht, die sicherstellt, dass die zu testende Klasse für die Spionage vorbereitet ist. Der Test wird mit PowerMockRunner ausgeführt, der das Verspotten statischer und privater Methoden erleichtert.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3