Макет только одного статического метода абстрактного класса (Calendar.class) - PullRequest
0 голосов
/ 06 марта 2019

Я хочу издеваться только над статическим методом 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 является абстрактным.

...