У меня есть зависимость от одноэлементного класса перечисления, например
public enum SingletonObject {
INSTANCE;
SingletonObject() {
// some annoying initialization
}
public callDB() {
this.num = num;
}
}
Я пытаюсь протестировать такой класс, как
public class MyClass {
public void doSomething() {
// some code
SingletonObject.INSTANCE.callDB();
}
}
Следуя этому ответу, я попытался просто протестировать макет с помощью следующего кода, но, похоже, у меня возникли проблемы с перечисление, вызывающее его конструктор
public class MyClassTest {
@Mocked
private SingletonObject singleton;
@Before
public void setup() {
Deencapsulation.setField(SingletonObject.class, "INSTANCE", singleton);
}
@Test
public void test() {
assertSame(singleton, SingletonObject.INSTANCE);
}
}
Использование интерфейса кажется несколько многообещающим, но я сомневаюсь, что это лучший способ решить эту проблему.
Похоже, PowerMockito тоже многообещающий , но я хотел бы сохранить это в крайнем случае по разным причинам.
Итак, как я могу имитировать этот синглтон перечисления, не вызывая его конструктор?
enum
? - person Seelenvirtuose   schedule 25.06.2020