कई आवेदन में मैं अक्सर एल्गोरिदम, जो समर्पित उप एल्गोरिदम (या कोड का बस अच्छी तरह से परिभाषित टुकड़े) का इस्तेमाल करते हैं की है।मैं जावा में स्थानीय आंतरिक वर्ग विधियों का परीक्षण कैसे करूं?
public class OldStyle {
public int mainAlg() {
int x = subAlg01();
int y = subAlg02();
int z = x * y;
return z;
}
private int subAlg01() {
return 3;
}
private int subAlg02() {
return 5;
}
}
यह ठीक काम किया, लेकिन मैं कर रहा पसंद नहीं आया:
अब तक, जब मैं मुख्य एल्गोरिथ्म लिखा था, मैं प्रत्येक उप एल्गोरिथ्म के लिए एक निजी विधि उदाहरण नीचे (ओल्डस्टएल) में की तरह बनाया तरीकों का प्रसार (subAlg01 और subAlg02) जो, भले ही निजी, केवल एक विधि (mainAlg) द्वारा उपयोग किया जाता था।
हाल ही में मैं स्थानीय इनर क्लासों उपयोग dicovered और अब मेरा उदाहरण (NEWSTYLE) है:
public class NewStyle {
public int mainAlg() {
class Nested {
public int subAlg01() {
return 3;
}
public int subAlg02() {
return 5;
}
}
Nested n = new Nested();
int x = n.subAlg01();
int y = n.subAlg02();
int z = x * y;
return z;
}
}
मैं इसे बहुत पसंद है लेकिन अब मैं निम्नलिखित समस्या है: मैं subAlg01 और subAlg02 का उपयोग कर कैसे परीक्षण करते हैं JUnit?
वैसे: मैं ग्रहण का उपयोग कर रहा हूँ।
आपकी मदद के लिए धन्यवाद।
संपादित करें: मैं बेहतर व्याख्या करने की कोशिश करता हूं: मैंने कहा है, एक सॉर्टिंग एल्गोरिदम है और मैं यह सुनिश्चित करने के लिए परीक्षण करना चाहता हूं कि यह अपेक्षित रूप से चलता है। इस सॉर्टिंग एल्गोरिदम का उपयोग क्लास एक्स के केवल विधि एम द्वारा किया जाता है। मैं इसे क्लास एक्स का एक निजी तरीका बना सकता हूं लेकिन क्लास एक्स में आमतौर पर सॉर्टिंग के साथ कुछ भी नहीं है, तो सॉर्टिंग विधि के साथ कक्षा एक्स को "खराब" क्यों करें? तो मैंने इसे विधि एम के अंदर रखा। कुछ समय बाद मैं अपने सॉर्टिंग एल्गोरिदम को सुधारना चाहता हूं (मैं इसे तेज़ी से बना देता हूं) लेकिन मैं यह सुनिश्चित करना चाहता हूं कि इसका व्यवहार अपेक्षित है, इसलिए मैं इसे मूल परीक्षणों के साथ फिर से जांचना चाहता हूं।
है यही कारण है कि मैं क्या करना चाहते हैं, हो सकता है वहाँ कोई समाधान नहीं है, मुझे आशा है कि कोई मुझे मदद मिल सकती है।
जवाब पसंद के बाद संपादित करें। मैंने रॉडनी का जवाब चुना क्योंकि उसका समाधान मैंने अपनाया है: एक स्टैंडअलोन सहायक वर्ग मेरी मदद करता है (यह एक सहायक है!) उप-विधियों के बारे में स्पष्ट रूप से देखने के लिए और यह मुझे परीक्षण करने की क्षमता भी देता है।
मैं एक बार जब आप इंटरफ़ेस प्रकार है, तो आप समस्याओं के बिना अपने को लागू करने कोड का परीक्षण कर सकते ग्रहण टैग हटा दिया क्योंकि यह समस्या इसके लिए विशिष्ट नहीं है। –