【问题标题】:PowerMock Mockito: how to mock all static methods?PowerMock Mockito:如何模拟所有静态方法?
【发布时间】:2011-01-31 13:46:32
【问题描述】:

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

【问题讨论】:

    标签: java mocking mockito powermock


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      在班级级别添加@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-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        • 1970-01-01
        • 2012-02-09
        • 1970-01-01
        • 2019-10-28
        相关资源
        最近更新 更多