शायद मैं निर्भरता इंजेक्शन और परीक्षण की समझ की कमी दिखा रहा हूं, लेकिन मुझे समझ में नहीं आता है कि इंटरफेस को लागू नहीं करने वाले वर्गों के साथ निर्भरता इंजेक्शन का उपयोग करने से मुझे परीक्षण में मदद मिलती है?परीक्षण कोड जो एंटरप्राइज़ लाइब्रेरी पर निर्भरता है भले ही यह इंटरफेस प्रदान नहीं करता है?
उदाहरण के लिए, एंटरप्राइज़ लाइब्रेरी 5.0 दस्तावेज़ में यह उदाहरण बनाने के लिए यूनिटी कंटेनर का उपयोग करने के बारे में बात करता है। यह कहता है कि यह "सहायकता" सहायता करता है: निर्भरता इंजेक्शन शैली का उपयोग करते समय निर्भरताओं से कक्षाओं को अलग करना मुश्किल है। " MSDN
मैं अपने यूनिट परीक्षण फिक्स्चर में इसका उपयोग कैसे करूं?
public class TaxCalculator
{
private ExceptionManager _exceptionManager;
private LogWriter _logWriter;
public TaxCalculator(ExceptionManager em, LogWriter lw)
{
this._exceptionManager = em;
this._logWriter = lw;
}
}
मैंने इस तथ्य को प्रतिबिंबित करने के लिए शीर्षक बदल दिया कि मैं एंटरप्राइज़ लाइब्रेरी का परीक्षण नहीं करना चाहता हूं लेकिन मेरा स्वयं का कोड एंटरप्राइज़ लाइब्रेरी पर निर्भर करता है। –
मैंने स्पष्ट रूप से बोलने के लिए उत्तर अपडेट किया है कि बाहरी निर्भरताओं के प्रकाश में आप अपने कोड का परीक्षण कैसे करेंगे। –
बीटीडब्ल्यू अपने इंटरफेस को परिभाषित करता है जो आपके आवेदन की ज़रूरतों का वर्णन करता है (उदाहरण के लिए लॉगिंग) अच्छा लगता है। व्यापार कोड से बुनियादी ढांचे को अलग करना बहुत अच्छा है। लेकिन कूल फ्रेमवर्क फीचर्स खोना, अनुकूलन और प्रदर्शन खोना, एक और अमूर्त स्तर जोड़ना निश्चित रूप से अच्छा नहीं है। –