Einrichten Powemockito für statische Spott
Möchte ich die Verwendung von Powermock mit Mockito zu verspotten einige statische Methode Aufrufe. Ich folgte den Anweisungen und Beispiele, SO wie auch die PowerMock Erste Schritte und MockStatic Seiten, so gut ich kann, aber ich bin noch ein mockStatic () - Aufruf.
Wenn ich Anrufe, mockStatic(foo.class -) aus meiner test-Klasse, ich bin angesichts der excception:
java.lang.NoClassDefFoundError: org/Mockito/mock/MockName
at org.powermock.api.mockito.PowerMockito.mockStatic(PowerMockito.java:70)
at ...my test class method call...
Ich bin sicher, dies ist ein setup-problem, wie ich schon finden, die Terminologie, die verwendet wird für die Einstellung zu sein, ziemlich verwirrend. Ich habe greifen die Mockito-Zip von der PowerMock downloads. In Eclipse (3.5.2) ich öffnete die Projekt-Eigenschaften Hinzugefügt und alle die Gläser auf den build-Pfad. Ich habe auch versucht, indem die gesamte entpackt powermockito Ordner auf meine Umgebung vars classpath, und dann nur die powermockito jar insbesondere, wenn das hat nicht funktioniert.
Habe ich diese annotationsat der Klasse-Niveau meiner test-Klasse als auch pro powermock Anweisungen:
@RunWith(PowerMockRunner.class)
@PrepareForTest(ApplicationContextLoader.class)
Auch diese powermock-spezifische imports:
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
Diejenigen von Ihnen, die verwendet haben PowerMockito vor, auch nur einen Zeiger in die richtige Richtung, oder etwas, das zu überprüfen, wäre wirklich hilfreich. Ich bin kämpfen, um zu sehen, wie sich mein setup unterscheidet sich von den posts, die ich gesehen habe mit von dem, was ich sagen kann - die gleiche syntax.
Nicht dass ich mich erinnere, obwohl es schon ein paar Jahre. Ich habe die Antwort von @Wände von Ihnen positiv bewertet werden, so dass die meisten helfen, eine Lösung.
InformationsquelleAutor Ubunfu | 2013-09-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich die Versionen von Powermock und Mockito sind nicht kompatibel. Fix, und es wird kein n Thema mehr.
Finden Sie unter: https://github.com/jayway/powermock/wiki/MockitoUsage
InformationsquelleAutor Devs
Wenn Sie eine statische mock-Objekt, in Ihrem
PrepareForTest
annotation, fügen Sie die Klasse, die ÜBER das statische Objekt zusätzlich zu den statischen Klasse selbst. Wenn die Klasse, die Sie testen, muss dieser statische, fügen Sie die aktuelle Klasse der annotation. Sie gar nicht verhöhnen die Klasse, aber es muss in der annotation für die statische Haken. Es klingt seltsam, aber es funktioniert.Beim hinzufügen von mehreren Klassen in der Anmerkung aus, die Sie haben, können Sie innerhalb
{}
und getrennt durch Kommas. Zum Beispiel, wenn Sie Ihre statische KlasseStaticA.class
und die Klasse mit der statischen istCallerOfStatic.class
Sie verwenden können:@RunWith(PowerMockRunner.class) @PrepareForTest( { ApplicationContextLoader.class, TestClass.class }) public class TestClass { ..test class code... }
hat es funktioniert 🙂 ???
Haha, scheinbar war ich zu sehr damit beschäftigt, zu machen, lesbar zu sagen, dass Teil. Aber Nein, es scheint nicht zu sein, macht keinen Unterschied.
Ich sehe keine Anzeichen dafür, dass es ein problem verursacht, aber sind Sie sicher, dass es so sein soll, wie das? Es sieht nicht, dass die Art und Weise, in der MockStatic - Dokumentation
wenn es für Sie gearbeitet machen Sie sicher, dass die Antwort akzeptieren, wenn die Menschen so in die Zukunft führen zu einem ähnlichen Problem, Sie wissen, was funktioniert, ohne zu sichten die Kommentare 🙂
InformationsquelleAutor Walls
Stellen Sie sicher powermockito und mockito-Versionen ausgerichtet, wie in diesem Diagramm - https://github.com/jayway/powermock/wiki/MockitoUsage#supported-versions ,
Einfach zu finden ist,
In meinem Fall, powermock
1.5.6
und mockito1.9.5
ausgerichtet wurden, hatte aber zu ändern, verwendenmockito 1.8.5
, als jemand anderes in die Abhängigkeit war schon mit mockito 1.8.5.Folgende Kombination perfekt für mich funktioniert,
InformationsquelleAutor prayagupd