我正在使用Retrier類來重試失敗的任務。我的代碼看起來像這樣。我在我的測試用例中使用Mockito嘲笑Retrier類如何使用Mockito模擬然後使用參數回答
someMethod() {
Callable a = new TestingCall()
Retrier.call(a, arg2, arg3)
.....
}
我的測試代碼看起來像這樣。
testMymethod()
// mock(Retrier.class)
when(Retrier.call(any(Callable.class), anyObject(), anyObject()).thenAnswer(new Answer<Boolean>() {
@Override
public Boolean answer(InvocationOnMock invocation) throws Throwable {
return true;
}
});
但是,當運行測試,它在Retrier.call
Retrier.call拋出一個零指示字例外使用傳遞的參數,其即將作爲空因此NPE。
注意:我也嘗試過傳遞類似的東西了。
時(Retrier.call(任何(Callable.class),任(arg2.Class), 任何(arg3.Class),其中ARG2和參數3被嘲笑了。
關於此錯誤的任何想法?還是成功地做它的另一種方式
如果'Retrier.call'是靜態調用,這並不工作,因爲做的Mockito **不**使用靜態。還有什麼是'arg2.Class'(類上的大寫C?) – 2015-04-07 06:01:40
這是一個錯字。它是.class(小寫)。它是靜態的。如果我將其更改爲非靜態,這是否可行?如果不是,那麼備用解決方案是什麼? – jigsaw
你應該發佈整個課程(Retrier和一個運動'someMethod')。 – 2015-04-07 08:58:16