2017-04-11 1 views
1

Können wir uns die statischen Methoden des FileUtils-Pakets mit PowerMock vortäuschen? Ich habe eine Anforderung, wo mein Geschäftscode eine copyFileToURL (URL, Datei) des FileUtils-Pakets aufruft, und für Unit-Tests muss ich es mit Powermock verspotten, was eine unvollendete Stubbing-Ausnahme ergibt.Powermock- und FileUtils-Paket

Dieser Link org.mockito.exceptions.misusing.UnfinishedStubbingException Unfinished stubbing detected, es wird vorgeschlagen, dass wir nicht die Klassen von java.lang Paket verspotten können, zu denen diese Datei utils gehören? Ich möchte keinen Wrapper für diese Klasse erstellen. Gibt es einen anderen Weg?

+0

Danke für Ihre Hilfe, ich habe die Lösung. – user3789902

Antwort

1

Wenn Sie diese verknüpfte Frage sorgfältig lesen, finden Sie:

Ich kann nicht Mock Klassen von java.lang, java.net, java.io oder anderen Systemklassen, warum?

Aber Sie beabsichtigen, die Apache Commons FileUtil Klasse method zu verwenden.

In diesem Sinne: Sie wollen eine statische "Commons oder Garten" -Methode verspotten.

Und wenn das nicht funktioniert: Sie tun es falsch. Also, einfache Antwort: Lesen Sie ihre documentation erneut; und überprüfen Sie, wo Ihr Code abweicht.

Aber darüber hinaus: die Verwendung von statisch bedeutet immer: da dies zu einer engen Kopplung Ihres Produktionscodes führt; und Sie verlieren die Vorteile von Polymorphie. Und es bedeutet: Sie sind in dem spöttischen Rahmen eingeschränkt, den Sie verwenden können (da nur PowerMock oder JMockit statisches Mocking unterstützt).

Also meine wirkliche Antwort: verbrachte diese paar Zeilen und baute einen Wrapper um diese statischen Methoden; und die Anforderung, statische Aufrufe zu simulieren, loszuwerden.

Verwandte Themen