मैं कई निजी वर्गों के साथ कक्षा का परीक्षण करने का प्रयास कर रहा हूं (हां, मुझे पता है कि इसे आम तौर पर टेस्टेबिलिटी के लिए खराब अभ्यास माना जाता है, लेकिन यह सवाल डिजाइन सिद्धांतों के संबंध में नहीं है)। मेरी कक्षा कुछ इस तरह दिखेगा:क्या PowerMock परीक्षण मामलों के लिए एक आंतरिक कक्षा को तत्काल कर सकता है?
Class clazz = Whitebox.getInnerClassType(EnclosingClass.class, "InnerClass");
Constructor constructor = Whitebox.getConstructor(clazz, null);
InnerClassType innerClass = (InnerClassType) constructor.newInstance(null);
और यह भी:
public class EnclosingClass {
.
.
.
private class InnerClass implements InnerClassType {
public InnerClass(){ /* do stuff */}
public int InnerClassMethod();
}
}
InnerClassType
एक सार्वजनिक इंटरफ़ेस
मैं ऐसा करके powermock साथ कक्षाएं instantiating की कोशिश की है है:
Class clazz = Whitebox.getInnerClassType(EnclosingClass.class, "InnerClass");
InnerClassType innerClass = (InnerClassType) Whitebox.invokeConstructor(clazz);
हालांकि, दोनों प्रयासों पर मुझे ConstructorNotFoundException
क्या इन आंतरिक कक्षाओं को तुरंत चालू करना संभव है? यदि हां, तो मैं गलत कहां जा रहा हूं?
पूरी तरह से काम करता है - यह सुनिश्चित करता है कि मेरे यूनिट परीक्षणों को एक गुच्छा ऊपर साफ कर दें! – JoshC13
यह देखते हुए कि इनर क्लास निजी है, आप इनर क्लास टाइप कैसे प्राप्त कर सकते हैं ?? –