मैच के लिए एक अलग इकाई परीक्षण लिखना पूरी तरह से तर्कसंगत होगा, क्योंकि यह काफी गैर-तुच्छ है।
आपके द्वारा दिखाया गया कोड match
बिना किसी ट्रिक एज केस के एक बहुत ही मामूली 1-लाइनर है, या क्या यह एक सरल उदाहरण की तरह है? वैसे भी, मुझे लगता है कि यह सरल होगा ...
प्रश्न: अनाम नामस्थान में फ़ंक्शन और स्थिरांक लगाने की बात क्या है, अगर यह उन्हें परीक्षणों में अनुपयोगी बनाता है?
यह सवाल है कि क्या मुझे यहाँ कूदने के लिए करना चाहता था क्योंकि डेडुप्लिकेटर ने पहले से ही अंदर तोड़ने और #include
प्रवंचना के माध्यम से पहुंचने का एक अच्छा तरीका दिखाया । लेकिन यहां शब्दांकन ऐसा लगता है कि हर एक चीज के आंतरिक कार्यान्वयन के विस्तार का परीक्षण करने पर लगता है कि यह किसी प्रकार का सार्वभौमिक अंतिम लक्ष्य है, जब यह इससे दूर है।
इकाई परीक्षण का लक्ष्य हमेशा कार्यक्षमता की हर छोटी बारीक आंतरिक सूक्ष्म इकाई का परीक्षण करना नहीं होता है। एक ही सवाल पूछकर सी आप में स्थिर फ़ाइल-गुंजाइश कार्यों के लिए लागू होता भी जवाब देने के लिए प्रश्न कठिन बना सकते हैं क्यों डेवलपर्स का उपयोग pimpls
C ++ जो आवश्यकता होगी दोनों friendship
और #include
प्रवंचना सफेद बॉक्स करने के लिए, बेहतर संकलन समय के लिए कार्यान्वयन विवरण के आसान testability व्यापार, जैसे
एक तरह के व्यावहारिक दृष्टिकोण से, यह सकल लग सकता है लेकिन इसे match
कुछ किनारे वाले मामलों के साथ सही ढंग से लागू नहीं किया जा सकता है जो इसे यात्रा करने का कारण बनता है। हालांकि, अगर एकमात्र बाहरी वर्ग, Foo
, की पहुंच न हो match
संभवतः एक तरह से उपयोग नहीं कर सकते कि मुठभेड़ों उन बढ़त मामलों, तो यह नहीं बल्कि अप्रासंगिक है की शुद्धता के लिए Foo
कि match
इन बढ़त मामलों है कि जब तक सामना किया जा कभी नहीं होगा है Foo
परिवर्तन, जो बिंदु पर के परीक्षण Foo
विफल हो जाएंगे और हम तुरंत जान जाएंगे।
एक अधिक जुनूनी मानसिकता हर एक आंतरिक कार्यान्वयन विवरण (शायद एक मिशन-महत्वपूर्ण सॉफ़्टवेयर, उदाहरण के लिए) का परीक्षण करने के लिए उत्सुक हो सकता है और पार्टी में टूट सकता है, लेकिन बहुत से लोग जरूरी नहीं समझते कि यह सबसे अच्छा विचार है, क्योंकि यह पैदा करेगा। सबसे भंगुर परीक्षण कल्पना। YMMV। लेकिन मैं सिर्फ इस सवाल के शब्दों को संबोधित करना चाहता था, जो इस तरह की आवाज करता है जैसे कि उबेर-ठीक-दानेदार-आंतरिक-विस्तार-स्तरीय परीक्षण क्षमता एक अंतिम लक्ष्य होना चाहिए, जब यहां तक कि सबसे कठोर इकाई परीक्षण मानसिकता भी थोड़ा आराम कर सकती है और हर वर्ग के आंतरिक मामलों में एक्स-रे करने से बचें।
तो लोग C ++ में अनाम नामस्थानों में या बाहरी दुनिया से छिपे हुए सी में आंतरिक लिंकेज के साथ फ़ाइल-स्कोपिक स्टैटिक फ़ंक्शंस में फ़ंक्शन को क्यों परिभाषित करते हैं? और यह मुख्य रूप से यह है: उन्हें बाहरी दुनिया से छिपाने के लिए। यह जटिलता को कम करने के लिए संकलन समय को कम करने से लेकर (जो अन्यत्र नहीं पहुँचा जा सकता है, कहीं और समस्याएँ पैदा नहीं कर सकता है) और इसके आगे के कई प्रभाव हैं। संभवतः निजी / आंतरिक कार्यान्वयन विवरणों की परीक्षणशीलता लोगों के दिमाग पर नंबर एक चीज नहीं है जब वे इसे करते हैं, कहते हैं, बिल्ड समय को कम करते हैं और बाहरी दुनिया से अनावश्यक जटिलता को छिपाते हैं।
foo.cpp
, हेडर नहीं है! ओपी को अच्छी तरह से समझ में आ रहा है कि आपको एक हेडर में एनोन नामस्थान नहीं डालना चाहिए।