我可以使用PowerMockito模拟最终类中的静态方法和不同类中的非静态方法吗?

时间:2014-01-23 03:28:54

标签: unit-testing junit powermock

我在最终的A类中有一个静态方法,它在B类中调用非静态方法。

我需要模拟A中的静态方法和B中的非静态方法来添加单元测试。 PowerMock是否有针对这种情况的解决方案?

1 个答案:

答案 0 :(得分:0)

您应该使用PowerMock来模拟A和Mockito中的静态方法,以模拟B中的非静态方法。在this recent answer我同时执行:

  • 模拟在AccountManager上获取静态方法
  • 也可以在客户经理
  • 上模拟getAccounts方法

更清楚的是,对于静态模拟:

  1. 将@RunWith(PowerMockRunner.class)添加到测试类
  2. 将@PrepareForTest(A.class)添加到测试类
  3. 致电PowerMockito.mockStatic(AccountManager.class);
  4. 使用when时的存根行为(A.method(any(Param.class)))。thenReturn(value);
  5. 对于非静态模拟:

    1. 添加模拟字段@Mock B accountManager;
    2. 在@Before注释方法中初始化模拟MockitoAnnotations.initMocks(this);
    3. Stub行为时(B.method())。thenReturn(value);
    4. 您可能需要在A类上配置B对象。在这个例子中,我在get方法中执行此操作。在你的情况下,它可能会有所不同,你必须弄清楚如何做到这一点。

      问候。