23

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

ConnectionStringSettings connStringSettings = ConfigurationManager. 
    ConnectionStrings["myConnectionString"]; 

लेकिन, connStringSettings रिक्त है: देखने के लिए मेरे कनेक्शन था इस कोड को भाग गया। निरीक्षण पर, कनेक्शनस्ट्रिंग संग्रह में केवल एक की गणना है। ऐसा लगता है कि मेरे web.config से नहीं पढ़ रहा है।

मेरा डीएएल अलग है और कोड के माध्यम से इसकी कनेक्शन स्ट्रिंग सेट नहीं हो सकती है। इसकी कनेक्शन स्ट्रिंग इस तरह कोड में सेट है:

set 
{ 
    value = System.Configuration.ConfigurationManager. 
     ConnectionStrings["myConnectionString"].ConnectionString; 
} 

मैं इसे कैसे हल कर सकता हूं?

+0

यदि आप डेटाबेस तक पहुंच रहे हैं, तो आप इकाई परीक्षण नहीं कर रहे हैं, आप एकीकरण परीक्षण कर रहे हैं। यूनिट परीक्षण के लिए, आपको अपनी डेटा एक्सेस लेयर का नकल करना चाहिए, उस समय कनेक्शन स्ट्रिंग पहलू अप्रासंगिक है। –

+0

@ डीबीएम - अच्छा बिंदु। मैंने टैग और शीर्षक अपडेट किया। –

उत्तर

51

अपनी यूनिट परीक्षण परियोजना में App.config फ़ाइल जोड़ें और Web.config से कनेक्शन स्ट्रिंग पर प्रतिलिपि बनाएँ।

+1

क्या यह अभी भी एकमात्र व्यवहार्य समाधान है (अब तक अन्यथा कहने के लिए कुछ भी नहीं मिला है ... लेकिन मुझे वैसे भी पूरा नहीं मिला है)। अगर मैं अपनी कनेक्शन स्ट्रिंग कर सकता हूं तो क्या होगा? मुझे फिर यह सुनिश्चित करना होगा कि यह परीक्षण परियोजना में भी बदल गया है? – Trent

+0

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

+0

यदि आप डेटाबेस तक पहुंचने के लिए नहीं हैं, तो आप अपने प्रश्नों का परीक्षण कैसे कर रहे हैं? – Trent

5

इकाई परीक्षण की app.config फ़ाइल में कनेक्शन स्ट्रिंग जोड़ें। यूनिट टेस्ट प्रोजेक्ट को आपके वेब प्रोजेक्ट की वेब कॉन्फ़िगरेशन तक पहुंच नहीं होगी।

6

उत्कृष्ट यह मेरे लिए काम करता है। मैंने इकाई परीक्षण परियोजना के तहत App.config फ़ाइल जोड़ा है। लेकिन सुनिश्चित करें कि हम synatx का पालन करें जोर से अन्यथा यह अपवाद फेंक देगा।

<connectionStrings> 

    <add name="test" connectionString="" providerName="System.Data.SqlClient" /> 

    <add name="db" connectionString=""" providerName="System.Data.SqlClient"/> 

</connectionStrings> 

-3

एक अन्य समाधान समाधान संपत्ति पृष्ठों पर जाने के लिए है (समाधान-> गुण)

स्टार्टअप परियोजना - चेक एकल स्टार्टअप परियोजना के साथ एक है config।

चुनें, ठीक है - किया गया।

संबंधित मुद्दे