Powermock (mit Easymock) kein letzter Aufruf zu einem Mock verfügbar

8

Ich versuche, einfach einen einfachen Testfall auszuführen. Ich habe die folgende Methode.

%Vor%

Ich werde diese Methode / meinen Testfall weiter aufbauen, während ich gehe. Ich wollte jedoch nur sicherstellen, dass ein einfacher Testfall zuerst funktioniert. Also schrieb ich den folgenden Test.

%Vor%

Danach bekomme ich den folgenden Fehler:

%Vor%

Ich habe einige der anderen Beiträge auf StackOverflow gelesen, aber ihre Lösung schien zu sein, dass sie PowerMock mit Mockito verwendeten. Ich benutze Powermock und Easymock, also sollte das nicht das Problem sein.

Ich folgte Renes Ratschlag und fügte das Folgende an die Spitze meiner Klasse.

%Vor%

Ich habe den vorherigen Fehler behoben. Aber jetzt habe ich diesen Fehler.

%Vor%

Irgendwelche Ideen darüber, was das verursachen könnte, wären großartig.

    
Cameron Jones 21.11.2013, 14:29
quelle

2 Antworten

16

Haben Sie die Testklasse mit @RunWith(PowerMockRunner.class) und @PrepareForTest(CommandLineOptionProcessor.class) kommentiert?

%Vor%

Sie benötigen @PrepareForTest(CommandLineOptionProcessor.class) auf Testklassenebene. Sehen Sie sich das Powermock-Dokument an:

  

Verwenden Sie die Annotation @PrepareForTest (ClassThatContainsStaticMethod.class) auf der Klassenebene des Testfalls.

Stellen Sie außerdem sicher, dass sich die erforderlichen Bibliotheken im Testklassenpfad befinden.

In Ihrem Fall javassist Bibliothek fehlt. Legen Sie es auf den Klassenpfad. Vielleicht fehlen auch noch einige andere Bibliotheken ... wir werden sehen.

Wenn Sie

erhalten %Vor%

Dann verwenden Sie EasyMock.replay() , aber Sie müssen PowerMock.replay()

verwenden     
René Link 21.11.2013, 14:31
quelle
0
%Vor%

oder

%Vor%

oder

%Vor%

ist in Ihrem Code nicht vorhanden, muss nach der Methode sein, die Sie testen möchten Dies ist der Fall, wenn Ihre Testmethode eine ungültige Methode ist.

sonst können Sie verwenden:

%Vor%

füge das auch zu deiner Testklasse hinzu:

%Vor%     
Radu Toader 21.11.2013 14:57
quelle