2017-03-31 15 views
5

मैंने पढ़ा है कि सबकुछ मजाक करना बुरा है।
Test Smell: Everything is mocked
Mock Everything Is a Good Way to Sinkसब कुछ मजाक किए बिना एक अच्छा यूनिट परीक्षण कैसे लिखता है?

मैं भी पढ़ा है कि इकाई एक भी घटक पर नज़र परीक्षण जबकि एकता परीक्षण एक पूरे एक साथ काम कर सिस्टम का परीक्षण।
Writing Great Unit Tests: Best and Worst Practices

यह मुझे भ्रमित करता है। जैसा कि मैं इसे समझता हूं, उचित इकाई परीक्षण लिखने के लिए किसी को भी सब कुछ मजाक कर एक घटक को अलग करने की आवश्यकता होती है लेकिन एसयूटी। यदि कोई परीक्षण में वास्तविक वस्तुओं का उपयोग करता है, तो क्या वह परीक्षण एकीकरण परीक्षण नहीं बनता है?

सब कुछ मजाक किए बिना एक अच्छा (पृथक) इकाई परीक्षण कैसे लिखता है?

+0

यह जानने के बिना जवाब देना बहुत मुश्किल है कि "सबकुछ" से आपका क्या मतलब है। – developer

उत्तर

4

मॉकिंग मॉडल खराब गंध है। आपको केवल निर्भरताओं का नकल करना चाहिए जो परीक्षण विधि के तर्क में भाग लेते हैं, डेटा नहीं। लेकिन इस सरल नियम के साथ भी, चीज़ें हमेशा स्पष्ट नहीं होती हैं।

कुछ मामलों में, एक विधि परीक्षण इकाई सीधे है क्योंकि विधि के अपने तर्क नियम हैं और इसके तर्क को पूरा करने के लिए एक अलग बाहरी निर्भरता के लिए एक या दो आमंत्रण भी हैं। इस मामले में मॉकिंग प्राकृतिक लगता है।

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

इस मामले में, मुझे लगता है कि एकीकरण परीक्षण यूनिट परीक्षणों के पक्ष में किया जाना चाहिए।

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