Невозможно смоделировать приватный конструктор enum.
Ниже приведено перечисление MySingleton с приватным конструктором, в этом конструкторе я создаю сервис, который выполняет удаленный вызов.В моем тесте я хочу смоделировать этот конструктор, чтобы при выполнении junit мой тест не подключался к удаленному серверу.
Использование powermock для макета конструктора enum.Я могу ввести экземпляр enum, используя класс Powermock Whitebox.Также можно получить фиктивный сервис при вызове фиктивного экземпляра.
Чтобы имитировать вызов частного конструктора, используя whenNew (MySingleton.class) .withAnyArguments (). ThenReturn (instance) , но закрытый конструкторenum не работает, и test пытается подключиться к удаленному сервису.
Как смоделировать вызов частного конструктора в enum?
public enum MySingleton {
Instance;
private MyService service
private MySingleton () {
// service initialization. service connect to remote server
service = new MyService();
System.out.println("Constructor Invoke");
}
public Myservice getService() {
return service;
}
}
public class DriverClass {
public void initService()
{
MySingleton.Instance.getService();
}
}
@RunWith(PowerMockRunner.class)
@PrepareForTest(MySingleton.class)
public class DriverClassTest {
@Mock private Myservice service;
private MySingleton instance;
@before
public void setup() {
instance = mock(MySingleton.class);
Whitebox(MySingleton.class,"Instance",instance);
whenNew(MySingleton.class).withAnyArguments().thenReturn(instance);
}
@test
public void testInitSerice()
{
when(instance.getService()).thenReturn(service);
new DriverClass().initService();
}
}