Java 如何验证从未对空对象调用过方法?

Java 如何验证从未对空对象调用过方法?,java,mockito,Java,Mockito,我有一个可能为空的对象 我想验证当一个对象为null时,它的方法没有被调用 我编写了一个测试用例,如下所示: String str = mock(String.class); str = null; verify(str, never()).length(); 但莫基托回答说: org.mockito.exceptions.base.MockitoException: Cannot mock/spy class java.lang.String Mockito can

我有一个可能为空的对象

我想验证当一个对象为null时,它的方法没有被调用

我编写了一个测试用例,如下所示:

    String str = mock(String.class);
    str = null;
    verify(str, never()).length();
但莫基托回答说:

org.mockito.exceptions.base.MockitoException: 
Cannot mock/spy class java.lang.String
Mockito cannot mock/spy following:
  - final classes
  - anonymous classes
  - primitive types

如何验证我的a方法没有在空对象上调用?

不能在空对象引用上使用模拟操作

但是,如果对空对象引用调用了任何方法,那么您将得到一个NPE——当然,这应该会使您的测试失败,除非您期望一个NPE


如果这是测试结果的一部分,您还可以使用来确保str实际上为null。

您的意思是对象引用不是null,对吗?相反,我想验证在null对象上没有调用任何方法。我猜这就是您要寻找的。什么?如果在null引用上调用一个方法,您将得到一个NullPointerException,测试也将失败。确保您编写的代码中没有null指针异常并不是Mockito真正要做的。