仅模拟一个抽象类的静态方法(Calendar.class)

时间:2019-03-06 01:58:28

标签: java mocking mockito powermockito

我只想模拟抽象类Calendar.getInstance()的静态方法Calendar.class。我遍历了几个SO问题,讨论了模拟单个方法,模拟静态方法或抽象类,但是我无法将这三个方法的组合发挥作用。

我尝试了几种变体: 初始化类

   @RunWith(PowerMockRunner.class)
   @PrepareForTest({Calendar.class})

然后...

   mockStatic(Calendar.class);
   when(Calendar.getInstance()).thenReturn(null);

将模拟getInstance(),但所有其他静态方法将返回null

   mockStatic(Calendar.class, Mockito.CALLS_REAL_METHODS);
   when(Calendar.getInstance()).thenReturn(null);

所有方法都起作用,但是getInstance()并不令人惊讶。

   PowerMockito.spy(Calendar.class);
   when(Calendar.class, "getInstance").thenReturn(null);

这仅适用于模拟一个静态方法,但是显然因为MissingMethodInvocationException是抽象的,所以它抛出Calendar

0 个答案:

没有答案