[英]NullPointerException in Mockito when mocking method with primitive argument
我花了最后一點時間拔出我的頭發試圖在我的測試中找到問題,並最終發現它與模擬一個采用原始參數的方法有關。 這是一個演示問題的示例測試:
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());
}
}
運行此測試時(我正在使用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)
....
我認為我的堆棧跟蹤的一部分正在被抑制(?)進一步深入研究它,如果我在Eclipse中運行它並“檢查”該行,我可以從中獲得更多信息,這簡單地告訴我:
java.lang.NullPointerException at longValue()
問題:
你應該匹配長而不是任何對象的匹配器:
verify(foo, times(1)).causeProblems(anyLong());
我檢查它運行正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.