2011-01-31 117 views
3

當使用PowerMock(使用Mockito)時,我們是否需要模擬所有類的靜態方法?我的意思是,假設我們有:PowerMock Mockito:如何模擬所有靜態方法?

class MockMe { 
    public static MockMe getInstance(){ 
       //return new Instance via complex process; 
    } 

    public static List<X> anotherStaticMethod(){ 
     // does xyz 
    } 
} 

我的問題,如果我需要模擬getInstance方法,是有必要嘲笑「anotherStaticMethod」呢?

PowerMock版本:1.3,版本的Mockito 1.8

回答

6

不,你可以在使用PowerMockito使用spy部分嘲諷。或者你也可以使用磕碰API:

stub(method(MockMe.class, "getInstance")).toReturn(myMockMeInstance); 
0

懲戒靜態方法 如何嘲弄和存根:

在類級別添加@PrepareForTest

@PrepareForTest(Static.class) // Static.class contains static methods 

呼叫PowerMockito.mockStatic()嘲笑一個靜態類(使用PowerMockito.spy(類),以嘲笑的具體方法):

PowerMockito.mockStatic(Static.class); 

只需使用Mockito.when()設置你的期望:

Mockito.when(Static.firstStaticMethod(param)).thenReturn(value); 
相關問題