使用nullpointer异常时,请使用wheres()。

发布于 2025-01-24 16:24:16 字数 2824 浏览 5 评论 0原文

我使用以下命令进行了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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

む无字情书 2025-01-31 16:24:16

如果NPE发生在您上述代码线上,则唯一的原因是servicEtasknull

如果您不使用正确的测试跑者,可以帮助您初始化模拟实例,则可以通过使用setup方法在使用mockitoAntoAntoNotations.initmocks(this)中手动初始化它们。

但是如果您已经这样做或使用了正确的测试跑者,则可能是链接到错误的代码行。尝试再次调试自己。

您的堆栈跟踪看起来并不像您链接的代码线引起的。

The only reason for NPE if it happens at the line of code you mentioned above is serviceTask is null.

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 using MockitoAnnotations.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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文