Powermockito doNothing für die Methode mit Argumenten
Habe ich entwickelt eine Anwendung in Java und ich bin versucht zu erstellen von unit-tests mit Powermockito (ich sollte hinzufügen, dass ich neu bin-unit-Tests).
Habe ich eine Klasse namens Resource, die hat eine statische Methode namens readResources:
public static void readResources(ResourcesElement resourcesElement);
ResourcesElement ist auch codiert von mir.
Bei der Prüfung, ich möchte mein eigenen Ressourcen, also ich will mit der oben beschriebenen Methode nichts zu tun.
Ich habe versucht mit diesem code:
PowerMockito.spy(Resource.class);
PowerMockito.doNothing().when(Resource.class, "readResources", Matchers.any(ResourcesElement.class));
Den unit-test wirft eine exception:
org.mockito.Ausnahmen.missbrauchen.UnfinishedStubbingException:
Unvollendete stubbing erkannt hier:
-> bei org.powermock.api.mockito.intern.PowerMockitoCore.doAnswer(PowerMockitoCore.java:36)
Powermockito auch darauf hin, dass ich verwenden soll thenReturn oder thenThrow nach, Wann, aber es scheint, dass die Methode 'Wann' gibt void zurück, wenn es aufgerufen wird, nachdem doNothing (was logisch ist).
Wenn ich versuchen:
PowerMockito.when(Resource.class, "readResources", Matchers.any(ResourcesElement.class)).....
doNothing ist nicht eine option nach wenn.
Schaffte ich Methoden ohne Argumente, nichts zu tun, mit den 2 Argumenten-version der Methode. Zum Beispiel:
PowerMockito.doNothing().when(Moduler.class, "startProcessing");
Dieser Werke (startProcessing nimmt keine Argumente).
Aber wie kann ich die Methoden, die Argumente, nichts zu tun mit Powermockito?
InformationsquelleAutor Anakin001 | 2014-04-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden Sie eine voll funktionsfähige Beispiel unten. Da Sie nicht posten das komplette Beispiel, ich kann nur annehmen, dass Sie nicht mit dem test-Klasse mit
@RunWith
oder@PrepareForTest
weil der rest scheint in Ordnung.Kein problem, passiert mir ein paar mal, und ich verlor ein paar Stunden zu versuchen, es herauszufinden
Was ist, wenn der "readResources" - Methode für den privaten und nicht-statische, in diesem Fall?
Es ist ziemlich ähnlich. Sie können sehen, eine vollständige Beispiel hier. Was hast du versucht und welche Probleme hast du?
Die Linie PowerMockito.doNothing()... ruft es readResources Methode als gut, während mocking-Methode. weiß jemand, wie man das unterbinden?
InformationsquelleAutor
Wenn
doNothing()
nicht funktioniert, können Sie es zu hacken ein bisschen mit derPowerMockito.doAnswer()
. Dies ermöglicht Ihnen, mock in void-Methoden, die etwas tun soll, wie Einstellung, Werte, etc. WenndoNothing()
nicht funktioniert, verwenden Sie eine leeredoAnswer()
sollte funktionieren.Beispiel:
InformationsquelleAutor
Warum gehen Sie durch so viel Mühe, einfach so, dass deine Methode nichts tut. Einfach anrufen
PowerMockito.mockStatic(Resource.class)
ersetzen sollten alle statischen Methoden in der Klasse mit Standard-stubs, die im Grunde bedeutet Sie nichts zu tun.Es sei denn, Sie wollen, ändern Sie das Verhalten Ihrer Methode um wirklich etwas zu tun und einfach mitgehen
PowerMockito.mockStatic(Resource.class)
sollte ausreichen. Natürlich bedeutet dies auch alle statischen Methoden in der Klasse sind Stubs, die Sie betrachten müssen.InformationsquelleAutor
Vielleicht kann ich nicht undestand deine Frage, aber ich glaube, es ist notwendig, festzulegen, was muss tun
die Methode, also, wenn Sie nicht angeben, thenReturn oder thenThrow oder was auch immer powerMockito nicht weiß, was zu tun ist, wenn das Lesen Ihrer eigentlichen code, zum Beispiel:
ECHTEN CODE:
Testen realer code von mockito:
Wenn nicht geben Sie die Rücksendung meiner test wird fehlschlagen.
Ich hoffe, es hilft.
InformationsquelleAutor