Я пытаюсь протестировать класс с несколькими частными классами (да, я знаю, что это обычно считается плохой практикой для тестируемости, но этот вопрос не касается принципов проектирования). Мой класс будет выглядеть примерно так:
public class EnclosingClass {
.
.
.
private class InnerClass implements InnerClassType {
public InnerClass(){ /* do stuff */}
public int InnerClassMethod();
}
}
InnerClassType
— общедоступный интерфейс
Я попытался создать классы с помощью powermock, выполнив:
Class clazz = Whitebox.getInnerClassType(EnclosingClass.class, "InnerClass");
Constructor constructor = Whitebox.getConstructor(clazz, null);
InnerClassType innerClass = (InnerClassType) constructor.newInstance(null);
а также:
Class clazz = Whitebox.getInnerClassType(EnclosingClass.class, "InnerClass");
InnerClassType innerClass = (InnerClassType) Whitebox.invokeConstructor(clazz);
Однако при обеих попытках я получаю ConstructorNotFoundException
Можно ли создать экземпляр этих внутренних классов? Если да, то где я ошибаюсь?