简体   繁体   English

当使用原始参数模拟方法时,Mockito中的NullPointerException

[英]NullPointerException in Mockito when mocking method with primitive argument

I've spent the last little while pulling out my hair trying to find the problem in my test, and eventually figured out it has to do with mocking a method that takes primitive arguments. 我花了最后一点时间拔出我的头发试图在我的测试中找到问题,并最终发现它与模拟一个采用原始参数的方法有关。 Here's a sample test that demos the problem: 这是一个演示问题的示例测试:

import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import org.junit.Test;

public class MockitoTest {
    public static interface Foo {
        public Object causeProblems(long arg);
    }

    @Test
    public void testFoo() {
        Foo foo = mock(Foo.class);
        foo.causeProblems(123);
        verify(foo, times(1)).causeProblems(any());
    }
}

When running this test (I'm using Mockito 1.10 and Java8), and for some reason my stack trace is showing an NPE on the verify line: 运行此测试时(我正在使用Mockito 1.10和Java8),由于某种原因,我的堆栈跟踪在verify行上显示NPE:

java.lang.NullPointerException
    at com.amazon.jetstream.executor.worker.invoke.MockitoTest.testFoo(MockitoTest.java:19)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
....

I think part of my stack trace is being suppressed (?) Digging into it a bit further, I can get slightly more info out of it if I run it in Eclipse and "inspect" the line, which tells me simply: 我认为我的堆栈跟踪的一部分正在被抑制(?)进一步深入研究它,如果我在Eclipse中运行它并“检查”该行,我可以从中获得更多信息,这简单地告诉我:

java.lang.NullPointerException at longValue()

Questions: 问题:

  1. Does anyone know how to workaround this bug? 有谁知道如何解决这个错误?
  2. If you can reproduce this, can you get more info out of your stack trace? 如果您可以重现这一点,您可以从堆栈跟踪中获得更多信息吗?

You should matcher that matches long not any object: 你应该匹配长而不是任何对象的匹配器:

verify(foo, times(1)).causeProblems(anyLong());

I checked that it runs correctly. 我检查它运行正常。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Mockito-模拟服务时抛出nullpointerException - Mockito - throws nullpointerException when mocking a service NockPointerException当Mockito嘲笑ObjectOutputStream.writeObject吗? - NullPointerException when Mockito mocking ObjectOutputStream.writeObject? Mocking 方法以通用功能接口作为参数 - Mockito - Mocking method with generic functional interface as an argument - Mockito 由于在模拟方法时未在Mockito中加载属性,所以发生java.lang.NullPointerException - java.lang.NullPointerException is occuring due to property is not loading in Mockito when mocking a method Mockito - 存根方法时出现 NullpointerException - Mockito - NullpointerException when stubbing Method Mockito NumberFormat在when()方法中模拟NullPointer - Mockito NumberFormat mocking NullPointer in when() method Mockito when 不是模拟而不是调用实际方法 - Mockito when is not mocking instead of calling actual method Java Mockito InvalidUseOfMatchersException when mocking 方法 - Java Mockito InvalidUseOfMatchersException when mocking method 使用Mockito模拟具有Pageable和Slice接口的数据库调用时,出现NullPointerException - NullPointerException when mocking a DB call with Pageable and Slice Interfaces with Mockito 使用Mockito模拟类时出现NullPointerException - NullPointerException while mocking a class with Mockito
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM