2013-10-30 7 views
5

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

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

क्या इस स्थिति में मदद करने के लिए एक डिज़ाइन पैटर्न है या निजी डार्ट कक्षाओं और विधियों के लिए यूनिट परीक्षण के लिए एक तरीका लिखा गया है?

+0

मैं सभी निजी सदस्यों को सार्वजनिक परीक्षा वर्ग से विस्तारित करने के बारे में सोच रहा था जो अंतर्निहित निजी वर्ग में कुछ भी नहीं जोड़ता है, इस तरह मैं सीधे खुला कक्षाओं के माध्यम से परीक्षण कर सकता हूं और केवल उपयोगकर्ताओं को किसी भी तरह की अनदेखी को अनदेखा कर सकता हूं "टेस्ट", लेकिन यह बहुत गंदा लगता है – 0xor1

+1

क्या आप अपनी लाइब्रेरी को कई पुस्तकालयों में विभाजित कर सकते हैं? यदि आप एक ही एप्लिकेशन में अपनी निजी कक्षाओं को एक अलग पुस्तकालय में ले जाते हैं तो आप उन्हें सार्वजनिक कर सकते हैं और उनका परीक्षण कर सकते हैं। फिर आप उन्हें अपनी वर्तमान लाइब्रेरी में आयात करेंगे और उन्हें निर्यात नहीं करेंगे (इसलिए आपकी लाइब्रेरी का उपयोगकर्ता तब भी आपकी अन्य कक्षाओं का उपयोग नहीं कर सकता है जब तक वह उस अन्य लाइब्रेरी को स्वयं आयात नहीं करता)। –

+0

इसकी प्रतिभा इतनी सरल है! – 0xor1

उत्तर

7

यदि आप एक ही एप्लिकेशन में अपनी निजी कक्षाओं को एक अलग पुस्तकालय में ले जाते हैं तो आप उन्हें सार्वजनिक कर सकते हैं और उनका परीक्षण कर सकते हैं। फिर आप उस लाइब्रेरी को अपनी वर्तमान लाइब्रेरी में आयात करेंगे और इसे निर्यात नहीं करेंगे (इसलिए आपकी लाइब्रेरी का उपयोगकर्ता तब भी आपकी अन्य कक्षाओं का उपयोग नहीं कर सकता है जब तक वह उस अन्य लाइब्रेरी को स्वयं आयात नहीं करता)।

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