इकाई परीक्षण के संबंध में, मुझे सिखाया गया था कि उत्पादन कोड में परीक्षण-संबंधित कोड नहीं होना चाहिए।एक एंटीपार्टर्न इकाई परीक्षण के लिए एकल कार्यान्वयन इंटरफेस हैं?
ठीक है, मुझे लगता है कि जब भी मैं इकाई परीक्षण करने की कोशिश करता हूं तो मैं उस नियम को तोड़ रहा हूं।
मेरे पास मेरी असेंबली के लिए एक कक्षा आंतरिक है, Xyzzy
। मैं निर्भरता चाहता हूं कि इसे किसी अन्य वर्ग में इंजेक्ट करें और फिर इसे दबाएं ताकि मैं अलगाव में दूसरी कक्षा का परीक्षण कर सकूं, इसलिए मैं एक इंटरफ़ेस बना देता हूं, IXyzzy
। ओह, अब मेरे पास उत्पादन में कोड है जो वास्तव में केवल परीक्षण के लिए है। इससे भी बदतर, मैं किस इंटरफेस के खिलाफ गया हूं (वर्णन करता है कि एक कार्यान्वयनकर्ता कर सकता है, यह नहीं कि है)। Xyzzy का सार्वजनिक इंटरफ़ेस और IXyzzy बिल्कुल वही हैं और कोई और नहीं (स्टब्स को छोड़कर) IXyzzy लागू करता है।
यह मेरे लिए एक बुरी चीज की तरह लगता है।
मैं, एक सार आधार वर्ग बना सकते हैं या सभी सार्वजनिक तरीकों मैं xyzzy Overridable
/virtual
पर परीक्षण करना चाहते हैं बना सकता है, लेकिन वह भी गलत लगता है के बाद से xyzzy विरासत के लिए और एक YAGNI नजरिए से नहीं बनाया गया है कभी नहीं होगा से विरासत में रहें।
एक विरोधी-पैटर्न का परीक्षण करने के उद्देश्य से एकल-कार्यान्वयन इंटरफेस बना रहा है? क्या बेहतर विकल्प हैं?
बहुत सच है, मेरे कई इंटरफेस, उदा। 'IRequestor', वर्णन करें कि यह क्या करता है;) –