Mockito NullPointerException bei der Verwendung einer

Ich versuche, mit Mockito wie diese :

    Mockito.when(Mockito.any(ObjectMapper.class).readValue(Mockito.any(BufferedReader.class),Mockito.any(Class.class))).thenReturn(new Person("1","abc"));

Dies ist von Jackson-Bibliothek .

public <T> T readValue(Reader src, Class<T> valueType)

Der Grund, warum ich Tue, es ist, weil die Zeit, die ich an dieser Stelle der code es gibt eine Tonne von Objekten, die erstellt wurden. Spott über jeden Schritt Zeit nehmen würden.

Einen Grund, warum ich immer bin, NPE, wenn der code erreicht diese mockito Aussage?

Stack Trace :

java.lang.NullPointerException
    at com.prashant.flax.ShellTest.givenDirectoryHasFiles(ShellTest.java:139)
    at com.prashant.flax.ShellTest.testExecute(ShellTest.java:61)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    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.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
    at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    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.junit.runner.JUnitCore.run(JUnitCore.java:160)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

Wie Sie sehen können ist es in einer bestimmten Methode(diese Methode hat nur dieses Stück code) , damit ich sehen kann, beim Debuggen, es reicht über es und stürzt ab.

  • hinzufügen stacktrace Ihrer NPE
  • Sie haben auf stub auf eine bestimmte mock-Objekt - ich glaube nicht, dass Sie tun können when(any(T.class)....).
  • Das ist meine Vermutung auch. Aber der compiler nicht beschwert, daher dachte ich, lassen Sie mich Fragen.
  • "Compiler nicht meckern" != "mein code ist in Ordnung" ;). Auch Ihre stacktrace nicht um Mockito an alle...
  • Danke @OliverCharlesworth . Ja, ich bin nicht sicher, warum gibt es keine mockito, aber doch nicht dort. Zumindest laut intellij(ShellTest.java:139 ist, dass die Linie). Aber trotzdem ist dies nicht der Weg zu gehen. Ich werde einen anderen Weg finden.
InformationsquelleAutor Prashant | 2016-03-28
Schreibe einen Kommentar