2015-05-11 4 views
7

Ich arbeite an einem Projekt, in dem wir gerade mit JUnit und Mockito testen. Jetzt versuche ich herauszufinden, welche Nebenwirkungen die Zugabe von PowerMock zum Mix haben würde.Warum nicht PowerMock

Was sind die Nachteile, irgendwelche Abhängigkeiten, die ich kennen sollte, irgendwelche Stabilitätsprobleme?

Ich habe gesehen, dass es Java 8 unterstützt. Gibt es irgendwelche Probleme? Nach dem, was ich gelesen habe, war Java 7 Support ein ziemlich langer Weg.

EDIT: Ich denke, noch eine Frage, die das alles wäre Summe würde:

Was wäre die Gründe nicht verwenden PowerMock?

+0

Können Sie etwas konkreter sein, auf welche Weise Sie fürchten, dass PowerMock möglicherweise nicht zuverlässig ist? –

+0

Bitte begrenzen Sie auch die Anzahl der Fragen auf einen oder zumindest auf ein Konzept, so wie es jetzt aussieht. Der Beitrag fällt direkt in die Kategorie ["unklar, was Sie fragen"] (http://stackoverflow.com/) Hilfe/geschlossene Fragen). –

+0

Ich hoffe, jetzt ist es ein bisschen klarer. Und auf ihrer Homepage heißt es auch: "Es kann mehr Schaden anrichten als Gutes, wenn man es in die Hände jüngerer Entwickler legt." – KKO

Antwort

27

Im Allgemeinen, wenn Sie ein neues Projekt starten und Sie PowerMock wegen der Architektur Ihres Codes verwenden möchten oder müssen, bedeutet dies, dass diese Architektur schlecht ist und verbessert werden muss. Power Mock bietet Ihnen Zugriff auf statische Methoden, Konstruktoren usw. Dies bedeutet, dass Ihr Code nicht den besten Programmierprinzipien folgt.

Power Mock sollte in Legacy-Anwendungen verwendet werden, in denen Sie den Code, den Sie erhalten haben, nicht ändern können. Oft hat ein solcher Code keine Unit-/Integrationstests und selbst kleine Änderungen können zu Fehlern in der Anwendung führen.

+2

Dies ist die am besten geeignete Antwort. Power Mock ist ein (sehr nützliches) Spezialwerkzeug, um veralteten, stinkenden oder anderweitig "schwierigen" Code testbar zu machen (ein gutes Beispiel, das kein Code-Geruch ist, würde "finale" Klassen verspotten), indem es umfassend in einem aktiv entwickelten Code verwendet wird Base könnte ein Zeichen für ein Problem sein. –

+0

Ok, ich verstehe, dass powermock nur für Legacy-Code und nicht für neue Projekte verwendet werden soll. Was ich nicht verstehe, ist das "Warum"? Treten Probleme auf, wenn Sie sie für neue Projekte verwenden?Es kann manchmal statische Klassen geben, vielleicht sogar endgültig, die getestet werden müssen, oder? – KKO

+0

Es geht hauptsächlich um Code-Design. Netter und sauberer Code verlangt nicht nach statischen Methoden, die kaum testbar sind. Abgesehen davon, dass Sie sie verwenden, verwenden Sie leichte und lose gekoppelte Dienste. Siehe http://stackoverflow.com/questions/871434/java-utility-class-vs-service. Aber natürlich hängt es davon ab, was Sie in Ihrem System erreichen wollen. – wsl

Verwandte Themen