मुझे लगता है कि इस तरह की परिस्थितियों में सबसे अच्छा जवाब यह है कि आप परीक्षण करने का प्रयास कर रहे हैं। आदर्श रूप से एक इकाई परीक्षण एक विधि या समारोह के बारे में एक तथ्य का परीक्षण करने की कोशिश कर रहा है। जब आप कई चीजों को एक साथ जोड़ना शुरू करते हैं तो यह एकीकरण परीक्षणों की दुनिया में पार हो जाता है (जो समान रूप से मूल्यवान होते हैं, लेकिन अलग-अलग होते हैं)।
यूनिट परीक्षण उद्देश्यों के लिए, आपको केवल उस चीज का परीक्षण करने में सक्षम बनाने के लिए, जिसे आप परीक्षण करना चाहते हैं, आपको टेस्टेबिलिटी के लिए डिज़ाइन की आवश्यकता होगी। इसमें आम तौर पर इंटरफेस का अतिरिक्त उपयोग शामिल होता है (मैं आपके द्वारा दिखाए गए कोड से .NET मान रहा हूं) और निर्भरता इंजेक्शन के कुछ रूप (लेकिन जब तक आप एक नहीं चाहते हैं तो आईओसी/डी कंटेनर की आवश्यकता नहीं होती है)। यह आपके सिस्टम में बहुत ही मिलनसार (एकल उद्देश्य) और decoupled (मुलायम निर्भरता) वर्ग बनाने के लिए आपको प्रोत्साहित करता है, और आपको प्रोत्साहित करता है।
तो जब आप व्यवसाय तर्क का परीक्षण कर रहे हैं जो डेटाबेस से डेटा पर निर्भर करता है, तो आप आमतौर पर Repository Pattern जैसे कुछ का उपयोग करेंगे और यूनिट परीक्षण के लिए fake/stub/mock IXXXRepository इंजेक्ट करेंगे। आप ठोस भंडार का परीक्षण करते समय, आप या तो डेटाबेस सफाई की तरह आप के बारे में पूछ रहे हैं क्या करने की जरूरत है या आप शिम/अंतर्निहित डेटाबेस कॉल ठूंठ की जरूरत है। यह वास्तव में आप पर निर्भर है।
आप डेटाबेस बनाने/पॉप्युलेट/सफाई की जरूरत है, तो आप सबसे अधिक परीक्षण चौखटे में उपलब्ध विभिन्न सेटअप और टियरडाउन तरीकों का लाभ लेने की सोच सकते हैं। लेकिन सावधान रहें, क्योंकि उनमें से कुछ प्रत्येक परीक्षण से पहले और बाद में चलाए जाते हैं, जो आपके यूनिट परीक्षणों के प्रदर्शन को गंभीरता से प्रभावित कर सकते हैं। बहुत धीमी गति से चलने वाले टेस्ट अक्सर नहीं चलेंगे, और यह बुरा है।
MS-टेस्ट में विशेषताओं का उपयोग होगा घोषित करने के लिए सेटअप/टियरडाउन ClassInitialize, ClassCleanUp, TestInitialize, TestCleanUp हैं। अन्य ढांचे के समान नामों का नाम है। Moq, Rhino Mocks, NMock, TypeMock, Moles and Stubs (VS2010), VS11 Fakes (VS11 बीटा), आदि, आप देख रहे हैं निर्भरता इंजेक्शन चौखटे के लिए:
वहाँ चौखटे है कि आप मजाक/छोटा करते के साथ मदद कर सकते हैं की एक संख्या हैं Ninject, Unity, Castle Windsor, आदि
आपको साफ करने के लिए 'टायरडाउन' (या अपने सूट में इसके बराबर) का उपयोग करना चाहिए क्योंकि यदि आपका परीक्षण विफल रहता है, तो क्लीन अप कोड निष्पादित नहीं होगा। –
अपवाद को पकड़ने के बारे में, फिर सफाई के बाद इसे फिर से फेंकना? –
जिमी बोगर्ड (* ऑटोमैपर * के लेखक) के पास एक महान लेख और टूल है: [Respawn के साथ विश्वसनीय डेटाबेस परीक्षण] (https://lostechies.com/jimmybogard/2015/02/19/reliable-database-tests-with-respawn /) –