आपके पास एक कक्षा X है और आप कुछ इकाई परीक्षण लिखते हैं जो व्यवहार X1 को सत्यापित करते हैं। वहाँ भी ए श्रेणी है जो एक्स को एक निर्भरता के रूप में लेता है।
जब आप ए के लिए यूनिट परीक्षण लिखते हैं, तो आप एक्स का मजाक उड़ाते हैं। दूसरे शब्दों में, यूनिट परीक्षण ए के दौरान, आप एक्स के नकली होने के व्यवहार को एक्स 1 होने के लिए निर्धारित (स्थगित) करते हैं। समय बीत जाता है, लोग आपके सिस्टम का उपयोग करते हैं, परिवर्तन की आवश्यकता होती है, एक्स विकसित होता है: आप एक्स को व्यवहार एक्स 2 दिखाने के लिए संशोधित करते हैं। जाहिर है, एक्स के लिए यूनिट परीक्षण विफल हो जाएंगे और आपको उन्हें अनुकूलित करने की आवश्यकता होगी।
लेकिन ए के साथ क्या? ए के लिए यूनिट परीक्षण तब विफल नहीं होंगे जब एक्स के व्यवहार को संशोधित किया जाता है (एक्स के मजाक के कारण)। कैसे पता लगाएं कि "वास्तविक" (संशोधित) एक्स के साथ चलने पर ए का परिणाम अलग होगा?
मुझे लाइन के साथ उत्तर की उम्मीद है: "यह इकाई परीक्षण का उद्देश्य नहीं है", लेकिन इकाई परीक्षण का क्या मूल्य है? क्या यह वास्तव में केवल आपको बताता है कि जब सभी परीक्षण पास हो जाते हैं, तो आपने एक परिवर्तन नहीं किया है? और जब कुछ वर्ग का व्यवहार बदलता है (स्वेच्छा से या अनिच्छा से), तो आप कैसे पता लगा सकते हैं (अधिमानतः स्वचालित तरीके से) सभी परिणाम? क्या हमें एकीकरण परीक्षण पर अधिक ध्यान नहीं देना चाहिए?
X1
करते हैं कि आप X
इंटरफ़ेस लागू कर रहे हैं X1
। यदि आप इंटरफ़ेस X1
को X2
मॉक में बदलते हैं तो आपको अन्य परीक्षणों में उपयोग नहीं करना चाहिए, इसलिए आपको उन परीक्षणों को भी ठीक करने के लिए मजबूर होना चाहिए। वर्ग के व्यवहार में बदलाव मायने नहीं रखना चाहिए। वास्तव में, आपकी कक्षा A
को कार्यान्वयन विवरण (जो आप उस स्थिति में बदल रहे हैं) पर निर्भर नहीं होना चाहिए। इसलिए इकाई परीक्षण A
अभी भी सही हैं, और वे आपको बताते हैं कि A
इंटरफ़ेस के एक आदर्श कार्यान्वयन को देखते हुए काम करता है।