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

时间:2011-01-31 13:46:33

标签: java mocking mockito powermock

使用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

2 个答案:

答案 0 :(得分:6)

不能在PowerMockito中使用spy进行部分模拟。或者您可以使用存根API:

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

答案 1 :(得分: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);