Я хочу издеваться только над статическим методом Calendar.getInstance()
абстрактного класса Calendar.class
.Я просмотрел несколько вопросов SO, в которых обсуждается, как использовать один метод, как статический метод или как абстрактный класс, но я не смог заставить работать комбинацию этих трех.
Я попробовал несколько вариантов: Initкласс с
@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
является абстрактным.