Tôi đang cố gắng kiểm tra một lớp học với một số lớp học riêng tư (vâng, tôi biết điều này thường được coi là thực hành kém để kiểm tra, nhưng câu hỏi này không liên quan đến nguyên tắc thiết kế). Lớp học của tôi sẽ giống như thế này:PowerMock có thể khởi tạo lớp bên trong cho các trường hợp thử nghiệm không?
public class EnclosingClass {
.
.
.
private class InnerClass implements InnerClassType {
public InnerClass(){ /* do stuff */}
public int InnerClassMethod();
}
}
InnerClassType
là một giao diện công cộng
Tôi đã thử instantiating lớp học với powermock bằng cách thực hiện:
Class clazz = Whitebox.getInnerClassType(EnclosingClass.class, "InnerClass");
Constructor constructor = Whitebox.getConstructor(clazz, null);
InnerClassType innerClass = (InnerClassType) constructor.newInstance(null);
và thêm:
Class clazz = Whitebox.getInnerClassType(EnclosingClass.class, "InnerClass");
InnerClassType innerClass = (InnerClassType) Whitebox.invokeConstructor(clazz);
Tuy nhiên, trên cả hai lần thử, tôi nhận được một số ConstructorNotFoundException
Có thể khởi tạo các lớp bên trong này không? Nếu vậy, tôi đang đi sai ở đâu?
Hoạt động hoàn hảo - chắc chắn rằng làm sạch đơn vị của tôi sẽ kiểm tra một loạt! – JoshC13
Cho rằng InnerClass là riêng tư, làm thế nào bạn có thể nhận được InnerClassType ?? –