CodeGym/Java-Kurse/Modul 3: Java Professional/Beliebte Szenarien für die Arbeit mit Mockito

Beliebte Szenarien für die Arbeit mit Mockito

Verfügbar

6.1 Verspotten der statischen Methode mockStatic()

Und ein weiterer wichtiger Punkt ist das Verspotten und Verifizieren statischer Methoden. „Was ist daran falsch?“, fragen Sie. Ja, statisch, aber die Methoden sind die gleichen. Und du wirst falsch liegen.

Erinnern Sie sich, wo wir angefangen haben, etwas über Scheinobjekte zu lernen? Da diese Objekte künstlich durch die erzeugt werden DynamicProxy. Und statische Methoden sind nicht an Objekte gebunden und DynamicProxyes ist unmöglich , Aufrufe an sie über abzufangen . Das ist alles.

Aber auch hier konnten die Macher von Mockito ausweichen – sie schrieben einen eigenen Klassenlader und konnten mit dessen Hilfe Klassen im Handumdrehen ersetzen. Eine große und schwierige Aufgabe, aber sie haben es trotzdem geschafft.

Sie müssen eine zusätzliche Bibliothek hinzufügen zu pom.xml:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-inline</artifactId>
    <version>4.2.0</version>
    <scope>test</scope>
</dependency>

So gehen Sie vor, wenn Sie eine statische Methode verspotten müssen.

1 Erstellen Sie ein spezielles Scheinklassenobjekt:

MockedStatic<ClassName>managerObject = Mockito.mockStatic(ClassName.class);

2 Fügen Sie diesem Objekt Operationsregeln hinzu:

An diesem Ziel der Regel muss man auf andere Weise festhalten.

managerObject.when(ClassName::method name).thenReturn(result);

3 Stellen Sie sicher , dass Sie die Verwendung dieses Objekts einschließen,try-with-resources damit das Objekt sofort gelöscht wird und Mockito die damit verbundenen Regeln löschen kann.

Beispiel:

@Test
void givenStaticMethodWithNoArgs () {
    try (MockedStatic< StaticUtils> utilities =  Mockito.mockStatic( StaticUtils.class)) {
        // add rule
         utilities.when(StaticUtils::name).thenReturn("Hello");

        // check if the rule works
        assertEquals("Hello", StaticUtils.name());
    }
}

Nicht so schön wie mit Anmerkungen @Mockund @Spy, aber sehr praktisch. Es war sehr schwierig, Tests zu schreiben, wenn es unmöglich war, eine einfache statische Methode zu simulieren, die in den zu testenden Methoden verwendet wurde.

Kommentare
  • Beliebt
  • Neu
  • Alt
Du musst angemeldet sein, um einen Kommentar schreiben zu können
Auf dieser Seite gibt es noch keine Kommentare