मान लीजिए कि मेरे पास एक वर्ग प्रबंधक है जो एक आधार वर्ग के कर्मचारी से प्राप्त होता है , और उस कर्मचारी के पास एक विधि getEmail () है जो प्रबंधक द्वारा विरासत में मिली है । क्या मुझे परीक्षण करना चाहिए कि एक प्रबंधक के व्यवहार () विधि का व्यवहार वास्तव में एक कर्मचारी के समान है?
जिस समय इन परीक्षणों के बारे में लिखा जाता है कि व्यवहार समान होगा, लेकिन निश्चित रूप से भविष्य में किसी बिंदु पर कोई इस पद्धति को ओवरराइड कर सकता है, अपने व्यवहार को बदल सकता है, और इसलिए मेरे आवेदन को तोड़ सकता है। हालांकि यह जरूरी है कि मैडलिंग कोड की अनुपस्थिति के लिए अनिवार्य रूप से परीक्षण किया जाए ।
(ध्यान दें कि परीक्षण प्रबंधक :: getEmail () विधि कोड कवरेज में सुधार नहीं करता है (या वास्तव में किसी भी अन्य कोड गुणवत्ता मैट्रिक्स (?)) के लिए प्रबंधक तक : getEmail () बनाया / अधिग्रहित है।)
(यदि उत्तर "हां" है, तो आधार और व्युत्पन्न वर्गों के बीच साझा किए जाने वाले प्रबंध परीक्षणों के बारे में कुछ जानकारी उपयोगी होगी।)
प्रश्न का एक समतुल्य सूत्रीकरण:
यदि एक व्युत्पन्न वर्ग बेस क्लास से एक विधि प्राप्त करता है, तो आप कैसे व्यक्त (परीक्षण) करते हैं कि आप विरासत में मिली विधि की अपेक्षा कर रहे हैं:
- ठीक उसी तरह से व्यवहार करें जैसे आधार अभी करता है (यदि आधार का व्यवहार बदलता है, तो व्युत्पन्न विधि का व्यवहार नहीं होता है);
- सभी समय के लिए आधार के समान व्यवहार करें (यदि आधार वर्ग का व्यवहार बदलता है, तो व्युत्पन्न वर्ग का व्यवहार भी बदल जाता है); या
- हालांकि यह व्यवहार करना चाहता है (आप इस पद्धति के व्यवहार की परवाह नहीं करते हैं क्योंकि आप इसे कभी नहीं कहते हैं)।
Managerवर्ग प्राप्तEmployeeकरना पहली बड़ी गलती थी।