संभव डुप्लिकेट:
Is Unit Testing worth the effort?बेवकूफ लग सकता है, लेकिन असली परीक्षण के लिए यूनिट परीक्षण उपयोगी हैं?
ठीक है, मैं जानता हूँ कि सामान्य रूप से कहें इकाई परीक्षण का उद्देश्य है क्या, लेकिन मैं कुछ चीजें हैं जो मुझे परेशान पाया।
1) प्रारंभिक बग खोज का परीक्षण करने का उद्देश्य। तो, बाद में पुनरावृत्तियों में, अगर मैं कोड में कुछ बदलाव करता हूं, तो स्वचालित परीक्षण मुझे अलार्म करना पड़ता है और मुझे बताता है कि मैंने अपने सॉफ़्टवेयर के कुछ लंबे समय पहले भूल गए टुकड़े को खराब कर दिया है।
लेकिन, का कहना है कि मैं कक्षा एक है और कहते हैं कि कुछ अन्य लोगों के वर्ग 'उदाहरण के साथ बातचीत है, यह वर्ग बी
फोन जब एक वर्ग एक के लिए इकाई परीक्षण लिखते हैं, वह वर्ग बी उपहास करने के लिए है तो, कुछ भविष्य में, यदि कोई कक्षा बी में कुछ बदलाव करता है, और इससे कुछ बग का कारण बनता है, तो वे केवल कक्षा बी के यूनिट परीक्षण में प्रतिबिंबित होंगे, ए में नहीं ('कारण ए का परीक्षण वास्तविक वर्ग बी का उपयोग नहीं करता है, लेकिन यह नकली है निश्चित इनपुट और आउटपुट के साथ)। तो, मैं नहीं देख सकता कि यूनिट परीक्षण कैसे किए गए बग की सूचना को जल्दी से सूचित कर सकता है जिसे किसी के बारे में पता नहीं है? मुझे कक्षा में संभावित बग के बारे में पता है कि मैं बदल रहा हूं, मुझे इसके लिए यूनिट टेस्ट की आवश्यकता नहीं है, मुझे अपने परिवर्तनों के परिणामों के बारे में अलार्म करने की आवश्यकता है जो कुछ "भूल गए" वर्ग में बग बनाता है, और यह नहीं है यूनिट परीक्षण के साथ संभव है। या मैं गलत हूँ?
2) जब मोज़े लिखने और कॉलिंग विधियों की सही अपेक्षाओं, उनके इनपुट और लौटने वाले मूल्यों को लिखते समय, किसी को यह पता होना चाहिए कि कक्षा-अंडर-टेस्ट कैसे लागू किया जा रहा है। और मुझे लगता है कि परीक्षण संचालित विकास के साथ यह विरोधाभास है। टीडीडी में पहले एक परीक्षण लिखता है, और, उनके द्वारा संचालित, एक कोड लिखता है। लेकिन मैं सही उम्मीदों (और सामान्य रूप से परीक्षण) नहीं लिख सकता जब तक कि मैं कोड लिखता हूं जिसे परीक्षण किया जाना चाहिए। टीडीडी के साथ यह विरोधाभास है, है ना?
यदि मैं मैक्स के बजाय वास्तविक वस्तुओं का उपयोग करता हूं तो उन दोनों समस्याओं को हल किया जा सकता है। लेकिन वह यूनिट परीक्षण नहीं है, है ना? यूनिट टेस्ट क्लास-अंडर-टेस्ट में शेष सिस्टम को अलग-अलग रूप में अलग किया जाना चाहिए, असली कक्षाओं का उपयोग नहीं करना बल्कि मॉक्स।
मुझे यकीन है कि मैं कहीं गलत हूं, लेकिन मुझे यह नहीं मिल रहा है। मैं पढ़ रहा हूं और पढ़ रहा हूं और मुझे नहीं पता कि मुझे क्या गलत समझा गया है।
संबंधित: http://stackoverflow.com/questions/286587/are-you-really-using-unit-tests – Thilo