当前位置: 首页 > 知识库问答 >
问题:

使用when()时获取nullpointer异常。mockito中的thenreturn()

郗唯
2023-03-14

我使用下面的命令进行了mockito-junit测试。变量serviceTask是接口的实例,称为serviceTask。我在申报中使用了@Mock

声明:

@Mock 
private ServiceTask

命令行:

Mockito.when(serviceTask.getTask(Mockito.anyLong())).thenReturn(new Task());

堆栈跟踪:

Java语言lang.NullPointerException在sun。反映NativeMethodAccessorImpl。sun上的invoke0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:90)。反映DelegatingMethodAccessorImpl。在java中调用(DelegatingMethodAccessorImpl.java:55)。郎。反思。方法在org调用(Method.java:508)。朱尼特。跑步者。模型FrameworkMethod$1。在org上运行ReflectiveCall(FrameworkMethod.java:50)。朱尼特。内部的跑步者。模型可反射。在org上运行(ReflectiveCallable.java:12)。朱尼特。跑步者。模型框架方法。在org上以开放方式调用(FrameworkMethod.java:47)。朱尼特。内部的跑步者。声明。调用方法。在org上评估(InvokeMethod.java:17)。朱尼特。内部的跑步者。声明。RunBefores。在org上评估(RunBefores.java:26)。莫基托。内部的跑步者。DefaultInternalRunner$1$1。在org上评估(DefaultInternalRunner.java:54)。朱尼特。规则。ExpectedException$ExpectedExceptionStatement。在org上评估(ExpectedException.java:239)。朱尼特。规则。运行规则。在org上评估(RunRules.java:20)。朱尼特。跑步者。ParentRunner。runLeaf(ParentRunner.java:325)位于org。朱尼特。跑步者。BlockJUnit4ClassRunner。org上的runChild(BlockJUnit4ClassRunner.java:78)。朱尼特。跑步者。BlockJUnit4ClassRunner。org上的runChild(BlockJUnit4ClassRunner.java:57)。朱尼特。跑步者。ParentRunner 3美元。在org上运行(ParentRunner.java:290)。朱尼特。跑步者。ParentRunner 1美元。org上的时间表(ParentRunner.java:71)。朱尼特。跑步者。ParentRunner。org上的runChildren(ParentRunner.java:288)。朱尼特。跑步者。ParentRunner。在org上访问$000(ParentRunner.java:58)。朱尼特。跑步者。ParentRunner 2美元。在org上评估(ParentRunner.java:268)。朱尼特。跑步者。ParentRunner。在org上运行(ParentRunner.java:363)。莫基托。内部的跑步者。DefaultInternalRunner$1。在org上运行(DefaultInternalRunner.java:99)。莫基托。内部的跑步者。DefaultInternalRunner。在org上运行(DefaultInternalRunner.java:105)。莫基托。内部的跑步者。StrictRunner。在org上运行(StrictRunner.java:40)。莫基托。朱尼特。MockitoJUnitRunner。在org上运行(MockitoJUnitRunner.java:163)。日食jdt。内部的junit4.runner。JUnit4TestReference。在org上运行(JUnit4TestReference.java:89)。日食jdt。内部的朱尼特。跑步者测试执行。在org上运行(TestExecution.java:41)。日食jdt。内部的朱尼特。跑步者RemoteTestRunner。在org上运行测试(RemoteTestRunner.java:541)。日食jdt。内部的朱尼特。跑步者RemoteTestRunner。在org上运行测试(RemoteTestRunner.java:763)。日食jdt。内部的朱尼特。跑步者RemoteTestRunner。在org上运行(RemoteTestRunner.java:463)。日食jdt。内部的朱尼特。跑步者RemoteTestRunner。main(RemoteTestRunner.java:209)

共有1个答案

金钧
2023-03-14

如果发生在您上面提到的代码行,NPE的唯一原因是serviceasknull

如果您没有使用正确的测试运行程序来帮助您初始化模拟实例,那么您实际上可以在您的设置方法中使用模拟注释手动初始化它们。initMocks(本)

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

堆栈跟踪看起来不像是由链接的代码行引起的。

 类似资料:
  • 我试图存根这个方法:QueryUtils.to顺序(排序,根,构建器)和我正在做 但它进入queryUtils方法体,它会说Sort为null,并抛出一个NPE。但是,当它是存根时,为什么需要进入方法体?我以前没有遇到过这个问题,我认为它不应该关心该方法的内部逻辑是什么。

  • 问题内容: 所以我的Android Gallery中有3个文件夹。我正在尝试将这些文件夹的文件读入File数组,然后从那里将图像源转换为real 。 我的问题是引用文件数组时遇到问题。这是一些代码: 使用这些图像文件数组… 我的CreateList方法。错误是当我引用list.length时。 就像我说的那样,错误是当我使用list.length引用一个File数组时,例如我在第一个代码段中创建的

  • @FacesConverter(“ContactConverter”)公共类ContactConverter实现转换器{ 我正在使用primefaces orderlist示例。但我面临这个空指针异常。谷歌后,我发现这个问题是一些与conveter有关的事情,但我不确定。谁能帮助我与转换器的简单的primeface orderlist。

  • 我有一个代码如下: 当我尝试运行代码时,我得到这样的消息: 我提到了这个链接,但不明白如何修改上面的代码,使其可行:例外:需要mockito,但没有调用,实际上与这个mock没有任何交互 有人能帮忙吗。 通过添加c.getResult(新的A(新的B()),新的F())解决了上述错误;在上面 我错过了什么?我一直在使用的课程:

  • 问题内容: 我遇到了非常奇怪的Java行为,但我不知道这是一个bug,还是我错过了一些东西。 该代码只需遍历stateStack(LinkedList)列表并销毁所有状态。 引发了以下异常: 该代码通常可以正常工作,并且已经投入生产一年多了。 这可能是Java错误吗? / 更新 / destroy()调用不会修改stateStack。如果可以的话,我猜Java会抛出ConcurrentModifi

  • 我正在尝试使用此程序来计算 D:\ 中的所有文件驱动器,但当我运行它时它抛出异常。