unit testing - डेटा चालित यूनिट टेस्ट




unit-testing mocking (3)

एपीआई परीक्षण करने के लिए सबसे अच्छा अभ्यास क्या है जो डेटाबेस से डेटा पर निर्भर करता है? बिल्डिंग प्रक्रिया के भाग के रूप में यूनिट टेस्ट चलाए जाने वाले "निरंतर एकीकरण" वातावरण में मुझे कौन-से समस्याएं देखने की आवश्यकता है? मेरा मतलब है कि क्या आप अपने डेटाबेस को बिल्ड स्क्रिप्ट (आपके इंस्टॉलर को चलाए जा सकते हैं) के हिस्से के रूप में तैनात करेंगे या क्या मुझे हार्डकोड डेटा [XML के साथ MSTest Data Driven Unit Tests] के लिए जाना चाहिए?

मैं समझता हूं कि मैं व्यावसायिक लॉजिक परत के लिए डेटा लेयर का नकली कर सकता हूं, लेकिन क्या अगर मुझे डीएएल में मेरे एसक्यूएल स्टेटमेंट में समस्याएं हैं? मुझे डेटाबेस को हिट करने की ज़रूरत है, है ना?

अच्छी तरह से ... यह प्रश्नों की एक धार है:) ... विचार?


जहाँ तक संभव हो, आपको डेटाबेस को पूरी तरह से मारने से बचने के लिए कोड का इस्तेमाल करना चाहिए, लेकिन मुझे लगता है कि आप अपने एसक्यूएल को लाइन पर कहीं और जांचने की आवश्यकता के बारे में सही हैं। यदि आप टेस्ट लिखते हैं जो कि डाटाबेस को मारते हैं, तो सिरदर्द से बचने के लिए एक महत्वपूर्ण टिप है, यह सुनिश्चित करना है कि आपका सेटअप एक ज्ञात राज्य में डेटा प्राप्त करता है, बजाय वहां उपलब्ध डेटा उपलब्ध होने पर निर्भर करता है।

और ज़ाहिर है, कभी भी अपने लाइव डेटाबेस के खिलाफ परीक्षण नहीं! लेकिन यह कहने के बिना ही जाता है :)


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


यह परीक्षण डिपार्टमेंट को स्वचालित रूप से पोंछने के लिए और फिर टेस्ट हार्नेस डेटा के साथ पॉप्युलेट करने के लिए एक अच्छा विचार है जिसे डेटाबेस से कनेक्ट होने के सभी परीक्षणों के लिए माना जाएगा। डेटाबेस को उचित अलगाव के लिए प्रत्येक परीक्षण से पहले रीसेट करने की आवश्यकता है - एक असफल परीक्षण जो बुरे डेटा में डालता है, परीक्षणों पर गलत असफलता का कारण बन सकता है और यदि आपको लगातार परिणामों के लिए किसी निश्चित क्रम में परीक्षण चलाने होंगे तो यह गंदा हो जाता है

आप डेटाबेस ( डीबीयूनेट , डीबीयूनेट .NET , अन्य) के साथ डेटाबेस को साफ़ कर सकते हैं और आबाद कर सकते हैं या अपनी खुद की उपयोगिता कक्षाएं एक ही काम करने के लिए कर सकते हैं।

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





data-driven-tests