Въпреки че следвах ръководството, изглежда не мога да се подигравам на статичен метод с 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
. Какво трябва да се направи различно?
(Да, знам, че кодът е ужасен, но е наследен и искаме да имаме някои тестове на единица преди рефакторинг)