2011-09-17 12 views
13

यूनिट परीक्षण सबक्लास के लिए सबसे अच्छा तरीका क्या है? आइए मान लीजिए कि एक बेस क्लास है जिसके लिए मैंने पहले ही परीक्षण लिखे हैं और कुछ उप-वर्ग हैं जो कुछ माता-पिता के व्यवहार को सार्वजनिक और/या संरक्षित तरीकों से ओवरराइड करते हैं।यूनिट परीक्षण सबक्लास

क्या मेरे उप-वर्गों के लिए टेस्ट क्लास मेरे बेस क्लास के लिए टेस्ट क्लास (जहां उचित हो वहां परीक्षण विधियों को ओवरराइड कर सकता है) ताकि सभी बेस क्लास परीक्षण लागू किए जाएं? अन्यथा, मैं परीक्षण कोड दोहराया जाएगा।

उत्तर

9

Liskov substitution principle के अनुसार, उप-वर्गों के उदाहरणों को बेस क्लास के समान गुण प्रदर्शित करना चाहिए, और इस प्रकार, एक ही यूनिट परीक्षण पास करें (सभी?)।

मैं प्रत्येक सबक्लास के लिए बेस क्लास परीक्षण [शायद सभी प्रासंगिक नहीं) चलाऊंगा। इसे test helper के साथ प्राप्त किया जा सकता है।

हां, परीक्षण कक्षा में सबक्लासिंग यूनिट परीक्षणों में डुप्लिकेशन से बचने का एक अच्छा तरीका हो सकता है। Testcase superclass पैटर्न पर एक नज़र डालें।

+0

लिस्कोव सबस्टेशन सिद्धांत लागू करने के तरीके के बारे में आपका दावा गलत है। एक सबक्लास की विधि को सभी बेस के यूनिट परीक्षणों को पारित करने की आवश्यकता नहीं होती है, अन्यथा वे व्यवहारिक रूप से समान होंगे। किस मामले में आधार विधियों को ओवरराइड करने का मुद्दा क्या है? –

+5

मूल पोस्टिंग Liskov सिद्धांत सही है। उपclass superclass, * और अधिक * के लिए सभी यूनिट परीक्षण पास करना चाहिए। अतिरिक्त परीक्षण उपclass की अतिरिक्त कार्यक्षमता को दर्शाता है। बेशक आप लिस्कोव का उल्लंघन करने के लिए इस तरह से एक विधि को ओवरराइड कर सकते हैं, और इस मामले में प्रासंगिक यूनिट परीक्षण विफल हो जाएंगे। – ComDubh

6

उदाहरण के बिना देखना मुश्किल है, लेकिन मैं परीक्षण के एक सेट में बेस क्लास का परीक्षण करता हूं, और फिर उप-वर्गों के लिए नए परीक्षण तैयार करता हूं और केवल अलग व्यवहार का परीक्षण करता हूं।

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