我只想模拟抽象类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
。