Teilweise Mock Private Methoden mit PowerMock-Mockito
Ich bin neu Mockito und PowerMock. Ich brauche zum testen von legacy-code, die über eine eigene Methode, die ich habe, zu verspotten. Ich bin am überlegen mit dem privaten teilweise spöttische Funktion von PowerMock, ich habe versucht, zu imitieren das Beispiel aus der link, aber es scheiterte. Ich habe keine Ahnung, was falsch mit es. Können Sie helfen, es zu überprüfen? Dank
Hier ist die Klasse zu-sein-getestet:
package test;
public class ClassWithPrivate
{
private String getPrivateString() {
return "PrivateString";
}
private String getPrivateStringWithArg(String s) {
return "PrivateStringWithArg";
}
}
- Und Dies ist der Test-Code:
package test;
import static org.mockito.Mockito.*;
import static org.mockito.Matchers.anyString;
import static org.powermock.api.mockito.PowerMockito.when;
import static org.powermock.api.support.membermodification.MemberMatcher.method;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.api.support.membermodification.MemberMatcher;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest(ClassWithPrivate.class)
public class ClassWithPrivateTest {
@Test
public void testGetPrivateString() {
ClassWithPrivate spy = PowerMockito.spy(new ClassWithPrivate());
PowerMockito.doReturn("Do").when(spy, method(ClassWithPrivate.class, "getPrivateStringWithArg", String.class)).withArguments(anyString());
}
}
BEARBEITEN
Als ich versuchte, den code zu kompilieren, es ist mit dem folgenden Fehler:
ClassWithPrivateTest.java:26: unreported exception java.lang.Exception; must be caught or declared to be thrown
PowerMockito.doReturn("Do").when(spy, method(ClassWithPrivate.class, "getPrivateStringWithArg", String.class)).withArguments(anyString());
^
ClassWithPrivateTest.java:26: unreported exception java.lang.Exception; must be caught or declared to be thrown
PowerMockito.doReturn("Do").when(spy, method(ClassWithPrivate.class, "getPrivateStringWithArg", String.class)).withArguments(anyString());
- Für mich der test funktioniert wie erwartet. Was meinst du mit "es ist fehlgeschlagen". Ist es eine Ausnahme, wenn Sie den test ausführen? Dann poste es hier.
- hi, wenn ich es kompiliert, es gab mir Fehler, wie oben. Hast du es kompilieren erfolgreich? Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich heraus, das problem, die test-Methoden erwartet eine Ausnahme. Nachdem ich es geändert wie folgt, es ist in Ordnung.