Mocking statische Methoden

8

Wie ich einige Nachforschungen gemacht habe, habe ich herausgefunden, dass PowerMock statische Java-Methoden vortäuschen kann.

Kann jemand (technisch) erklären, was PowerMock anders macht als JUnit und andere, die nicht können oder nicht? Und warum verursachen statische Methoden Probleme, wenn sie versucht werden, sich zu verhöhnen?

Danke

    
add9 23.03.2011, 08:21
quelle

1 Antwort

12

Ссылка

Um sich über eine Instanzmethode lustig zu machen, können Sie sie einfach in einer Unterklasse überschreiben. Dies ist mit statischen Methoden nicht möglich, da es keinen "statischen Polymorphismus" gibt.

Powermock kann das, weil es mit Bytecode arbeitet, während andere populäre Frameworks auf Polymorphismus beruhen und Unterklassen mit CGLIB erstellen.

Von der Verknüpfung: "Grundsätzlich verwenden alle Standard-Mock-Frameworks CGLib, um ein Mock-Objekt zu erstellen, was bedeutet, dass sie auf einem hierarchischen Modell basieren (CGLib erstellt eine Unterklasse der Klasse, die zur Laufzeit getestet werden soll) Mock-Objekt) anstelle eines Delegationsmodells, das PowerMock durch seine Byte-Code-Manipulation verwendet, indem es an das MockGateway delegiert. "

    
Konrad Garus 23.03.2011, 08:23
quelle

Tags und Links