Sto tentando di testare una classe con un numero di classi private (sì, so che questo è generalmente considerato una cattiva pratica per la testabilità, ma questa domanda non riguarda i principi di progettazione). La mia classe sarebbe simile a questa:PowerMock può istanziare una classe interna per i casi di test?
public class EnclosingClass {
.
.
.
private class InnerClass implements InnerClassType {
public InnerClass(){ /* do stuff */}
public int InnerClassMethod();
}
}
InnerClassType
è un'interfaccia pubblica
Ho provato istanziare le classi con powermock facendo:
Class clazz = Whitebox.getInnerClassType(EnclosingClass.class, "InnerClass");
Constructor constructor = Whitebox.getConstructor(clazz, null);
InnerClassType innerClass = (InnerClassType) constructor.newInstance(null);
e anche:
Class clazz = Whitebox.getInnerClassType(EnclosingClass.class, "InnerClass");
InnerClassType innerClass = (InnerClassType) Whitebox.invokeConstructor(clazz);
Tuttavia, in entrambi i tentativi ottengo un ConstructorNotFoundException
È possibile creare un'istanza di queste classi interne? Se sì, dove sto andando male?
Funziona perfettamente - questo pulisce sicuramente la mia unità! – JoshC13
Dato che InnerClass è privato, come si può ottenere InnerClassType ?? –