2011-01-31 121 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); 
相关问题