5

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

4

2 回答 2

6

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

stub(method(MockMe.class, "getInstance")).toReturn(myMockMeInstance);
于 2011-02-01T15:22:48.830 回答
0

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

@PrepareForTest在班级级别添加。

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

调用PowerMockito.mockStatic()模拟静态类(使用 PowerMockito.spy(class) 模拟特定方法):

PowerMockito.mockStatic(Static.class);

只需用于Mockito.when()设置您的期望:

Mockito.when(Static.firstStaticMethod(param)).thenReturn(value);
于 2014-11-28T04:42:51.113 回答