我剛開始嘲笑我們的應用程序的不同層次。當我調用最後一類靜態方法時,我的一個模擬對象正在返回NPE。有沒有解決的辦法?模擬對象調用最終類與Mockito靜態方法
例如
when(mockObject.someMethod(FinalClass.staticMethod(someParam)).anotherMethodCall)
.thenReturn("someString");
我剛開始嘲笑我們的應用程序的不同層次。當我調用最後一類靜態方法時,我的一個模擬對象正在返回NPE。有沒有解決的辦法?模擬對象調用最終類與Mockito靜態方法
例如
when(mockObject.someMethod(FinalClass.staticMethod(someParam)).anotherMethodCall)
.thenReturn("someString");
你必須一起使用PowerMock和Mockito。
我不明白你的代碼段試圖做什麼,但下面的代碼片段允許Calendar類的靜態getInstance()方法返回一個模擬日曆對象 。也許這會爲你指明正確的方向
在類級別:
@RunWith(PowerMockRunner.class)
@PrepareForTest(Calendar.class)
public class XXXXXX {
在您的測試方法
PowerMockito.mockStatic(Calendar.class);
Calendar calendar = mock(Calendar.class);
when(calendar.get(eq(Calendar.HOUR_OF_DAY))).thenReturn(3);
Mockito.when(Calendar.getInstance()).thenReturn(calendar);
如果我的類已用'@RunWith(Theories.class)'註釋'怎麼辦? – niaomingjian
的Mockito不支持嘲諷最終class.Have看看PowerMock。它可以讓你嘲笑靜態方法和類。它可以和Mockito一起工作,documentation解釋瞭如何做到這一點。
我發佈了錯誤的代碼片段。請重新檢查我的代碼 – user962206
無所謂,Mockito無法模擬最終課 – anergy
所以你的意思是它嘲笑最後一堂課?我認爲這只是調用最終類的靜態方法 – user962206
的Mockito不能嘲笑一般final的方法;然而,我懷疑即使刪除'final'也會對此有所幫助... – fge
mockito模擬最終類或統計方法是不可能的。雖然,我認爲你可以用力量模擬來做到這一點。也許你可以看看http://code.google.com/p/powermock/ – nikkatsa
對不起,爲了混淆,我更新了我的代碼片段。請檢查出 – user962206