मैं कैसे इकाई परीक्षण हठ करते हैं?

वोट
43

परीक्षण चालित विकास अभ्यास में एक नौसिखिया के रूप में, मैं अक्सर एक उलझन में एक डेटाबेस के लिए कैसे करने के लिए इकाई परीक्षण दृढ़ता के रूप में समाप्त होता है।

मुझे पता है कि तकनीकी रूप से यह एक एकीकरण परीक्षण (नहीं एक इकाई परीक्षण) होगा, लेकिन मैं निम्नलिखित के लिए सबसे अच्छा रणनीति पता लगाना चाहते हैं:

  1. परीक्षण किए जाते हैं।
  2. आवेषण परीक्षण। मुझे कैसे पता चलेगा कि डालने गलत हो गया है कि अगर यह विफल हो? मैं सम्मिलित करके और फिर पूछताछ की यह परीक्षण कर सकते हैं, लेकिन मैं कैसे पता कर सकते हैं कि क्वेरी गलत नहीं था?
  3. परीक्षण अद्यतन और हटाता है - परीक्षण आवेषण के रूप में ही

इन करने के लिए सर्वोत्तम प्रथाओं क्या हैं?


के बारे में परीक्षण एसक्यूएल: मुझे पता है कि यह किया जा सकता है, लेकिन अगर मैं NHibernate की तरह एक हे / आर मैपर उपयोग करें, यह उत्पादन प्रश्नों के लिए इस्तेमाल किया उपनाम में कुछ नामकरण मौसा देता है, और उस के रूप में कुछ हद तक अप्रत्याशित है मुझे यकीन है कि नहीं कर रहा हूँ मुझे लगता है कि के लिए परीक्षण कर सकता है।

मैं तो बस, सब कुछ छोड़ देना चाहिए और सिर्फ NHibernate पर भरोसा? मुझे यकीन है कि समझदारी है नहीं कर रहा हूँ।

05/08/2008 को 10:43
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


10 जवाब

वोट
16

डीबी यूनिट में देखो। यह एक जावा पुस्तकालय है, लेकिन एक सी # बराबर होना चाहिए। यह तो तुम क्या डेटाबेस में है देखने के लिए डीबी यूनिट के साथ इंटरफेस कर सकते हैं, तो आप डेटा का एक सेट के साथ डेटाबेस तैयार ताकि आप जानते हैं कि डेटाबेस में है की सुविधा देता है। यह कई डाटाबेस सिस्टम के खिलाफ चला सकते हैं, तो आप (स्मृति विकल्प में एक जावा डेटाबेस कार्यान्वयन एक साथ) अपने वास्तविक डेटाबेस सेटअप का उपयोग, या जावा में कुछ और, HSQL की तरह उपयोग कर सकते हैं।

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

11/08/2008 को 10:40
का स्रोत उपयोगकर्ता

वोट
15

के रूप में माइक स्टोन ने कहा , DbUnit अपने परीक्षण चलाने से पहले एक ज्ञात राज्य में डेटाबेस प्राप्त करने के लिए बहुत अच्छा है। जब आपके परीक्षण पूरा कर लें, DbUnit की स्थिति में इससे पहले कि आप परीक्षण भाग गया था में वापस डेटाबेस डाल सकते हैं।

DbUnit (जावा)

DbUnit.NET

25/08/2008 को 14:22
का स्रोत उपयोगकर्ता

वोट
4

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

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

05/08/2008 को 10:47
का स्रोत उपयोगकर्ता

वोट
3

मैं एक पोस्ट यहाँ लिखा है के विषय में डेटा परत का परीक्षण इकाई जो इस सटीक समस्या को शामिल किया गया। (शर्मनाक) प्लग के लिए क्षमा याचना, लेकिन लेख बहुत लंबा यहाँ पोस्ट करने के लिए है।

मुझे आशा है कि आप में मदद करता है - यह 3 सक्रिय परियोजनाओं पर पिछले 6 महीनों से अधिक मेरे लिए बहुत अच्छी तरह से काम किया है।

सादर,

रोब जी

13/08/2008 को 00:23
का स्रोत उपयोगकर्ता

वोट
2

JDBC आधारित परियोजनाओं के लिए, अनुचर ढांचे इस्तेमाल किया जा सकता: http://acolyte.eu.org । यह, डेटा का उपयोग आप परीक्षण करना चाहते हैं, JDBC अमूर्त से लाभ mockup करने के लिए एक विशेष परीक्षा डीबी को प्रबंधित किए बिना अनुमति देता है।

09/07/2014 को 10:20
का स्रोत उपयोगकर्ता

वोट
2

के लिए NHibernate, मैं निश्चित रूप से सिर्फ बाहर मजाक वकील चाहते हैं NHibernate APIइकाई परीक्षण के लिए - पुस्तकालय सही काम करने के लिए पर भरोसा है। आप यह सुनिश्चित करें कि डेटा वास्तव में डीबी को जाता है चाहते हैं, एकीकरण परीक्षण करना।

05/08/2008 को 12:20
का स्रोत उपयोगकर्ता

वोट
2

समस्या मैं अनुभव किया जब इकाई परीक्षण दृढ़ता, विशेष रूप से एक ORM बिना और इस तरह अपने डेटाबेस (कनेक्शन) मजाक, कि तुम सच में नहीं पता कि आपके प्रश्नों सफल होने के लिए है। यह हो सकता है कि आप अपने प्रश्नों विशेष रूप से एक विशेष डेटाबेस संस्करण के लिए तैयार कर रहे हैं और केवल उस संस्करण के साथ सफल। आप कभी नहीं पाएंगे कि बाहर अगर आप अपने डेटाबेस नकली। तो मेरी राय में, इकाई परीक्षण हठ केवल सीमित उपयोग की है। तुम हमेशा लक्षित डेटाबेस के खिलाफ चल परीक्षण जोड़ना चाहिए।

05/08/2008 को 11:29
का स्रोत उपयोगकर्ता

वोट
1

मैं आमतौर पर एक भंडार बना सकते हैं और उपयोग करें कि मेरी इकाई सहेजें, और फिर नए सिरे से एक को पुनः प्राप्त करने। तब मैं जोर है कि पुनः प्राप्त बचाया के बराबर है।

27/08/2008 को 22:17
का स्रोत उपयोगकर्ता

वोट
1

दृढ़ता के तकनीकी तौर पर इकाई परीक्षण इकाई परीक्षण वे एकता परीक्षण कर रहे हैं नहीं कर रहे हैं।

सी # mbUnit का उपयोग कर के साथ, आप बस SqlRestoreInfo और रोलबैक विशेषताओं का उपयोग

    [TestFixture]
    [SqlRestoreInfo(<connectionsting>, <name>,<backupLocation>]
    public class Tests
    {

        [SetUp]
        public void Setup()
        {

        }

        [Test]
        [RollBack]
        public void TEST()
        {
           //test insert. 
        }
    }

एक ही NUnit में किया जा सकता, excpet विशेषता नाम slighty भिन्न होते हैं।

जाँच करता है, तो आपकी क्वेरी succeful था के रूप में, आप सामान्य रूप से एक दूसरे क्वेरी के साथ यह पालन करने के लिए करता है, तो आपकी अपेक्षा के डेटाबेस बदल दिया गया है को देखने के लिए की जरूरत है।

05/08/2008 को 12:27
का स्रोत उपयोगकर्ता

वोट
1

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

05/08/2008 को 11:19
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more