Я использую PowerMock с EasyMock и задаюсь вопросом, как я могу издеваться над одиночным конструктором с частным конструктором?PowerMock - Mock a Singleton с частным конструктором
Скажем, у меня есть следующий класс:
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() { }
public static Singleton getInstance() {
return singleton;
}
public int crazyServerStuff() { ... }
}
и класс, который использует это:
public class Thing {
public Thing() {}
public int doStuff(Singleton s) {
return s.crazyServerStuff() + 42;
}
}
Как я мог издеваться метод crazyServerStuff
?
Я попытался следующие:
@RunWith(PowerMockRunner.class)
@PrepareForTest(Singleton.class)
public class ThingTest extends AndroidTestCase {
@Test
public void testDoStuff() {
MemberModifier.suppress(MemberModifier.constructor(Singleton.class));
Singleton mockSingleton = PowerMock.createMock(Singleton.class);
...
}
}
Но я получаю ошибку java.lang.IllegalArgumentException: No visible constructors in class Singleton
Кто-нибудь знает, что я не хватает?
Спасибо, но как я могу создать 'mockObject' для возврата? Это не требует вызова 'createMock'? – Jack
Вы должны быть в состоянии использовать вызов #createMock(), как описано выше –
Это бросает исключение в вопросе :( – Jack