2013-04-05 2 views
5

मैं एक विरासत codebase के लिए JUnit परीक्षण मामलों लिखने के लिए शुरू कर रहा हूँ बुला। सार्वजनिक विधियों में से एक में बयान और एकाधिक स्थितियों के आधार पर अलग-अलग निजी तरीकों को बुलाया जाता है।
मैं सिर्फ एक परीक्षा पद्धति और सभी स्थितियों के लिए परीक्षण लिखना चाहिए? या प्रत्येक शर्त के लिए एक विधि?JUnit बेस्ट प्रैक्टिस: सार्वजनिक विधि कई निजी तरीकों

अगर मैं शर्त के लिए अलग-अलग तरीकों को लिखूं तो क्या मैं निरंतरता खो दूंगा?

दृष्टिकोण निजी तरीकों का परीक्षण करने क्या है? निजी विधि तर्क सार्वजनिक तरीकों से अधिक जटिल हो सकता है।

उत्तर

4

परिदृश्यों की संख्या पर विधियों की संख्या को आधारित करें जिन्हें आप परीक्षण करना चाहते हैं, इसका परीक्षण करने वाली विधियों के साथ इसका कोई लेना-देना नहीं है।

यदि प्रत्येक परिदृश्य सेट अप करने के लिए अपना कोड लेता है, तो आपको प्रत्येक परिदृश्य के लिए एक परीक्षण विधि मिल जाएगी। यदि आप परीक्षणों को पैरामीटर कर सकते हैं तो आप एक परीक्षण विधि प्राप्त कर सकते हैं और प्रत्येक परिदृश्य के लिए अलग-अलग डेटा में पास कर सकते हैं।

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

0

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

+0

ऐसा नहीं कर सकते। यह एक विरासत कोड है और कुछ तर्क सार्वजनिक रूप से प्रकट नहीं किए जा सकते हैं। –

+0

मैं इसे सार्वजनिक रूप से नहीं बदलूंगा, लेकिन निजी पैकेजिंग और यह सुनिश्चित कर सकता हूं कि परीक्षण एक ही पैकेज में हैं (उत्पादन और परीक्षण स्रोतों को अलग करके) – user2088476

1

मैं नाथन के साथ सहमत हैं। टेस्ट परिदृश्यों से नहीं जाना चाहिए तरीकों से। कभी-कभी विरासत कोड इस तरह लिखा जाता है कि आपको सीधे निजी तरीकों का परीक्षण करने की आवश्यकता है। और हाँ, कोड को दोबारा इस्तेमाल किया जाना चाहिए। लेकिन अगर आप refactor या पहली जगह में एक परीक्षण ...

विकल्प 1 चाहते हैं नहीं कर सकते - बनाने के तरीकों पैकेज निजी उपयोग

यह एक बहुत ही सुरक्षित रिफैक्टरिंग है।

विकल्प 2 - उपयोग प्रतिबिंब स्थिर विधि सीधे

कॉल करने के लिए आप वास्तव में कोड को स्पर्श नहीं कर सकते हैं, यह सबसे अच्छा तुम कर सकते है। मैं कोड को छूने की आवश्यकता पर सवाल नहीं उठाऊंगा। अगर हम कोड में सुधार नहीं कर सकते हैं, तो क्या हमें इसे कोने में घुमाने के लिए छोड़ देना चाहिए?

+1

शायद ग्रोवी (जो गोपनीयता का सम्मान नहीं करता) में परीक्षण लिखना एक और विकल्प हो सकता है । –

+0

@NathanHughes उत्कृष्ट सुझाव! –

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