Heim >Java >javaLernprogramm >Wie verspotte ich bestimmte statische Methoden, die Objekte in Java zurückgeben, mit Mockito und PowerMock?

Wie verspotte ich bestimmte statische Methoden, die Objekte in Java zurückgeben, mit Mockito und PowerMock?

Susan Sarandon
Susan SarandonOriginal
2024-11-28 04:24:12470Durchsuche

How to Mock Specific Static Methods Returning Objects in Java Using Mockito and PowerMock?

Verspotten spezifischer statischer Methoden zur Rückgabe von Objekten

Mockito und PowerMock bieten robuste Unterstützung für das Verspotten statischer Methoden. Es kann jedoch schwierig sein, eine einzelne statische Methode zu verspotten und sie ein Objekt zurückgeben zu lassen.

Konflikte und Aufrufprobleme vermeiden

Beim Verspotten einer statischen Methode, die ein Objekt zurückgibt Bei einem Objekt ist es wichtig, Abweichungen in den Rückgabetypen zu vermeiden. Das Verspotten aller statischen Methoden mit einer Standardstrategie (z. B. die Rückgabe von Null für objektwertige Methoden) kann zu Fehlern führen.

PowerMockito.mockStatic(Static.class, new Answer()) verspottet alle Methoden , einschließlich m2, das einen anderen Rückgabetyp hat. Ebenso wird PowerMockito.when(Static.m1(param1, param2)).thenReturn(1000l) nicht aufgerufen, da die statische Methode nicht ordnungsgemäß verspottet wurde.

Statisches Mocking und zielspezifische Methode aktivieren

Die Lösung besteht darin, die Konzepte des statischen Methoden-Mockings und des gezielten Methoden-Stubbings zu kombinieren. PowerMockito.mockStatic ermöglicht statisches Mocking für eine Klasse, während die when-thenReturn-Syntax es Ihnen ermöglicht, bestimmte Methoden zu blockieren.

PowerMockito.mockStatic(Static.class);
when(Static.m1(param1, param2) ).thenReturn(1000l);

Dieser Ansatz ermöglicht statisches Mocking für alle Methoden von Static.class überschreibt jedoch nicht die standardmäßige Stubbing-Strategie. Durch die Verwendung von when-thenReturn unterbrechen Sie explizit die m1-Methode, um 1000l zurückzugeben.

Beachten Sie die MockStatic-Überladungen

PowerMockito bietet zwei Überladungen für mockStatic. Die Ein-Argument-Überladung (mockStatic(Static.class)) ermöglicht statisches Mocking ohne eine Standardstrategie. Mit der Überladung mit zwei Argumenten (mockStatic(Static.class, Answer())) können Sie eine Standardstrategie für simulierte Methoden bereitstellen.

Abhängig von Ihrem spezifischen Testszenario können Sie sich für die Verwendung einer von beiden entscheiden dieser Überlastungen. Wenn Sie nur eine bestimmte Methode verspotten oder mehrere Rückgabewerte für verschiedene Methodenaufrufe festlegen möchten, ist die Überladung mit einem Argument besser geeignet.

Das obige ist der detaillierte Inhalt vonWie verspotte ich bestimmte statische Methoden, die Objekte in Java zurückgeben, mit Mockito und PowerMock?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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