Несмотря на то, что я следовал руководству, я не могу имитировать статический метод с помощью PowerMock. Я пытаюсь издеваться над одноэлементным классом бога.
Код теста выглядит следующим образом:
@RunWith(PowerMockRunner.class)
@PrepareForTest(GodClass.class)
public class SomeTestCases {
@Test
public void someTest() {
PowerMockito.mockStatic(GodClass.class);
GodClass mockGod = mock(GodClass.class);
when(GodClass.getInstance()).thenReturn(mockGod);
// Some more things mostly like:
when(mockGod.getSomethingElse()).thenReturn(mockSE);
// Also tried: but doesn't work either
// when(GodClass.getInstance().getSomethingElse()).thenReturn(mockSE);
Testee testee = new Testee(); // Class under test
}
}
И тестируемый:
class Testee {
public Testee() {
GodClass instance = GodClass.getInstance();
Compoment comp = instance.getSomethingElse();
}
}
Однако это не работает. Режим отладки показывает, что instance
равно null
. Что нужно сделать иначе?
(Да, я знаю, что код ужасен, но он унаследован, и мы хотим провести несколько модульных тестов перед рефакторингом)