2009-06-10 8 views

उत्तर

4

मैं आमतौर पर नहीं करता हूं। यदि आप सार्वजनिक तरीकों का पूरी तरह से परीक्षण करते हैं कि निजी विधियों और आंतरिक कक्षाओं का उपयोग करें तो आप इसे बिना किसी खुलासा के निजी कार्यक्षमता की पूरी श्रृंखला का परीक्षण करने में सक्षम होना चाहिए।

0

आपको परीक्षण-विशिष्ट व्युत्पन्न कक्षा के माध्यम से संभवतः उन्हें आमंत्रित करने के साधनों का खुलासा करना होगा।

30

निजी तरीके:

आप गैर सरकारी तरीकों का परीक्षण करने की कोशिश कर रहे हैं, यह आम तौर पर आप गलत कर रहे हैं।

यदि ऐसी कार्यक्षमता है जिसे आप परीक्षण करना चाहते हैं, लेकिन अपनी कक्षा में सार्वजनिक नहीं करना चाहते हैं, तो कोड आपको कुछ बताने की कोशिश कर रहा है। आपकी कक्षा में शायद बहुत अधिक जिम्मेदारियां हैं। आपको गंभीरता से उस नई कार्यक्षमता को नई कक्षा में निकालने, नई कक्षा के लिए परीक्षण लिखने और नई कक्षा के नए वर्ग का निजी उदाहरण बनाने पर गंभीरता से विचार करना चाहिए।

आंतरिक कक्षाएं:

यह एक है, और अधिक मान्य है खासकर यदि आप दूसरों के पुन: उपयोग करने के लिए एक वर्ग पुस्तकालय लिख रहे हैं। आपके पास कक्षाएं हो सकती हैं जो सामान्य उपयोग के लिए डिज़ाइन नहीं की गई हैं, लेकिन आप यूनिट परीक्षण लिखना चाहते हैं।

इस मामले के लिए, InternalsVisibleToAttribute पर एक नज़र डालें।

+3

यह भी ध्यान देने योग्य है कि InternalsVisibleTo का उपयोग केवल परीक्षण असेंबली द्वारा उपयोग किए जाने वाले रचनाकारों/विधियों का पर्दाफाश करने के लिए किया जा सकता है और उन लोगों को क्लाइंट कोड से छुपाया जा सकता है। – jlafay

2

जिस तरह से मैं इसे संभालता हूं वह यह है कि मैं अपने सभी तरीकों को सार्वजनिक करता हूं। मुझे पता है कि बुरा लगता है, लेकिन मेरे साथ एक पल भालू।

आईओसी का उपयोग करते समय आपके पास प्रत्येक कक्षा के लिए एक इंटरफ़ेस है जिसमें इसमें कुछ तर्क है। तो मूल रूप से आप इंटरफेस के खिलाफ कोड करते हैं, न कि वास्तविक कार्यान्वयन। यह सब करने के लिए आप क्या करते हैं सभी विधियों को सार्वजनिक रूप से चिह्नित करना और यह उस वर्ग को प्रभावित करने के तरीके को प्रभावित नहीं करता है, सिवाय इसके कि उस वर्ग में प्रत्येक विधि के लिए यूनिट परीक्षण लिखना संभव हो जाता है।

संबंधित मुद्दे