Mockito scheint eine UnfinishedVerificationException
zu werfen, wenn ich denke, dass ich alles richtig gemacht habe. Hier ist mein Teil-Testfall:Mockito gibt UnfinishedVerificationException, wenn es OK scheint
HttpServletRequest req = mock(HttpServletRequest.class);
when(req.getHeader("Authorization")).thenReturn("foo");
HttpServletResponse res = mock(HttpServletResponse.class);
classUnderTest.doMethod(req, res); // Use the mock
verify(res, never());
verify(req).setAttribute(anyString(), anyObject());
Und hier ist der Teil-Klasse und Methode:
class ClassUnderTest extends AnotherClass {
@Override
public String doMethod(ServletRequest req, ServletRequest res) {
// etc.
return "someString";
}
}
Das Ignorieren der Tatsache, dass Sie sollten nie Mock Schnittstellen, die Sie nicht besitzen, warum Mockito mich geben die folgende Botschaft?
org.mockito.exceptions.misusing.UnfinishedVerificationException:
Missing method call for verify(mock) here:
-> at (redacted)
Example of correct verification:
verify(mock).doSomething()
Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
Those methods *cannot* be stubbed/verified.
at [test method name and class redacted]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.mockito.internal.runners.JUnit45AndHigherRunnerImpl.run(JUnit45AndHigherRunnerImpl.java:37)
at org.mockito.runners.MockitoJUnitRunner.run(MockitoJUnitRunner.java:62)
at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
... etc
Wie sieht die Klasse des 'classUnderTest' aus? Wie lautet die Signatur der Methode? Es funktioniert gut mit öffentlichen nicht-finalen Klassen/Methoden. –
Ich habe die Frage mit dem ClassUnderTest aktualisiert – Jonathan
Ist die Zeile, auf die in der Nachricht verwiesen wird (die Sie redigiert haben) die gleiche wie die Zeile, in der die Ausnahme tatsächlich ausgelöst wird? Wenn Sie eine nicht abgeschlossene Überprüfung haben, meldet Mockito dies normalerweise erst im nächsten Mockito-Verfahren. Es kann gut sein, dass Ihr Problem in der Testmethode VOR diesem Fall liegt. Deshalb meldet Mockito die Zeilennummer, wo der Fehler SEPARATIV von der Stack-Trace selbst auftritt. –