使用nullpointer异常时,请使用wheres()。
我使用以下命令进行了Mockito Junit的测试。变量ServicEtask是一个接口的Instancie,称为ServicEtask。我在声明中使用@mock
声明:
@Mock
private ServiceTask
命令行:
Mockito.when(serviceTask.getTask(Mockito.anyLong())).thenReturn(new Task());
stack跟踪:
java.lang.nullpoInterException at sun.reflect.nativemethodaccessorimpl.invoke0(天然方法) sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:90) 在 sun.reflect.delegatingmethodaccessorimpl.invoke(授权methodaccessorimpl.java:55) 在java.lang.reflect.method.invoke(method.java:508)at org.junit.runners.model.frameworkmethod $ 1.RunreFlectiveCall(frameworkmethod.java:50) 在 org.junit.internal.runners.model.reflectivecallable.run(ReflectiveCallable.java:12) 在 org.junit.runners.model.frameworkmethod.invokeexplosiverively(frameworkmethod.java:47) 在 org.junit.internal.runners.statement.invokemethod.evaluate(Invokemethod.java:17) 在 org.junit.internal.runners.statement.runbefores.evaluate(runbefores.java:26) 在 org.mockito.internal.runners.defaultInternalrunner $ 1 $ 1.EVALUTER(DefaultInternalrrunner.java:54) 在 org.junit.rules.ExpectedException $ endure exceptexceptionStatement.evaluate(Expectexception.java:239) 在org.junit.rules.runrules.evaluate(runrules.java:20)at org.junit.runners.parentrunner.runleaf(parentrunner.java:325)at org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:78) 在 org.junit.runners.blockjunit4classrunner.runchild(BlockJunit4Classrunner.java:57) 请访问org.junit.runners.parentrunner $ 3.run(parentrunner.java:290)at org.junit.runners.parentrunner $ 1.schedule(parentrunner.java:71)at org.junit.runners.parentrunner.runchildren(parentrunner.java:288)at org.junit.runners.parentrunner.access $ 000(parentrunner.java:58)at org.junit.runners.parentrunner $ 2.evaluate(parentrunner.java:268)at org.junit.runners.parentrunner.run(parentrunner.java:363)at org.mockito.internal.runners.defaultinternalrunner $ 1.run(DefaultInternalRunner.java:99) 在 org.mockito.internal.runners.defaultinternalrunner.run(defaultinternalrunner.java:105) 在 org.mockito.internal.runners.strictrunner.run(strictrunner.java:40) 在 org.mockito.junit.mockitojunitrunner.run(MockitoJunitrunner.java:163) 在 org.eclipse.jdt.internal.junit4.runner.junit4testreference.run(junit4testreference.java:89) 在 org.eclipse.jdt.internal.junit.runner.testexecution.run(testexecution.java:41) 在 org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:541) 在 org.eclipse.jdt.internal.junit.runner.remotetestrunner.runtests(remotetestrunner.java:763) 在 org.eclipse.jdt.internal.junit.runner.remotetestrunner.run(remotetEstrunner.java:463) 在 org.eclipse.jdt.internal.junit.runner.remotetestrunner.main(remotetEstrunner.java:209)
I have a mockito junit's test using the command below. The variable serviceTask is an Interface's instancie called ServiceTask. I'm using a @Mock in the declarection
Declaraction:
@Mock
private ServiceTask
Command Line:
Mockito.when(serviceTask.getTask(Mockito.anyLong())).thenReturn(new Task());
Stack Trace:
java.lang.NullPointerException at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:508) at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at
org.mockito.internal.runners.DefaultInternalRunner$1$1.evaluate(DefaultInternalRunner.java:54)
at
org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
at org.junit.rules.RunRules.evaluate(RunRules.java:20) at
org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at
org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at
org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at
org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at
org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at
org.junit.runners.ParentRunner.run(ParentRunner.java:363) at
org.mockito.internal.runners.DefaultInternalRunner$1.run(DefaultInternalRunner.java:99)
at
org.mockito.internal.runners.DefaultInternalRunner.run(DefaultInternalRunner.java:105)
at
org.mockito.internal.runners.StrictRunner.run(StrictRunner.java:40)
at
org.mockito.junit.MockitoJUnitRunner.run(MockitoJUnitRunner.java:163)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果NPE发生在您上述代码线上,则唯一的原因是
servicEtask
是null
。如果您不使用正确的测试跑者,可以帮助您初始化模拟实例,则可以通过使用
setup
方法在使用mockitoAntoAntoNotations.initmocks(this)中手动初始化它们。
,但是如果您已经这样做或使用了正确的测试跑者,则可能是链接到错误的代码行。尝试再次调试自己。
您的堆栈跟踪看起来并不像您链接的代码线引起的。
The only reason for NPE if it happens at the line of code you mentioned above is
serviceTask
isnull
.If you're not using the correct test runner which can help you to initialise the mock instance, then you can actually initialise them manually in your
setUp
method by usingMockitoAnnotations.initMocks(this);
But if you already did so or used the correct test runner, then probably you linked to a wrong line of code. Try to debug yourself again.
Your stack trace doesn't look like it caused from your linked line of code.