PowerMock Mockito:如何模拟所有静态方法?

在使用PowerMock(使用Mockito)时,我们是否需要模拟类的所有静态方法? 我的意思是,假设我们有:

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

我的问题是,如果我需要模拟getInstance方法,是否有必要模拟“anotherStaticMethod”?

PowerMock版本:1.3,Mockito版本:1.8

不,你可以在PowerMockito中使用间谍进行部分模拟。 或者您可以使用存根API:

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

模拟静态方法如何模拟和存根:

在课程级别添加@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);