समस्या: जब इकाई परीक्षण (स्थानीय true
पर सेट किया जाता कॉपी) कर SQLite विधानसभा मेरी DAL विधानसभा में संदर्भित उत्पादन फ़ोल्डर में प्रतिलिपि प्राप्त करता है।SQLite विधानसभा इकाई परीक्षण के लिए आउटपुट फ़ोल्डर में प्रतिलिपि नहीं
मैं वीएस -2008 में नेट 3.5 एप पर काम कर रहा हूं, एनएचबीर्नेट & मेरे डीएएल में SQLite के साथ। डेटा परतों को अन्य परतों में आईरिपोजिटरी इंटरफेस (रिपोजिटरी फैक्ट्री) के माध्यम से उजागर किया जाता है, इसलिए अन्य परतों में NHibernate
या System.Data.SQLite
असेंबली को संदर्भित करने की आवश्यकता नहीं है।
यूनिट परीक्षण के लिए, एक सार्वजनिक फैक्ट्री विधि (मेरे डीएएल में भी) है जो एक मेमोरी SQLite सत्र बनाता है और एक नया आईरिपोजिटरी कार्यान्वयन बनाता है। यह उन सभी असेंबली के लिए साझा SQLite इन-मेमोरी कॉन्फ़िगरेशन से बचने के लिए भी किया जाता है, जिन्हें इसकी आवश्यकता होती है, और उन डीएएल आंतरिक असेंबली को संदर्भित करने से बचने के लिए भी किया जाता है।
समस्याहै जब मैं इकाई परीक्षण जो एक अलग परियोजना रहते चलाने - अगर मैं इकाई परीक्षण परियोजना के लिए एक संदर्भ के रूप System.Data.SQLite
नहीं जोड़ते हैं, यह TestResults ... \ आउट फ़ोल्डर (में कॉपी किया नहीं प्राप्त करता है हालांकि यह प्रोजेक्ट मेरे डीएएल प्रोजेक्ट का संदर्भ देता है, जो System.Data.SQLite
का संदर्भ देता है, जिसमें इसकी प्रतिलिपि स्थानीय संपत्ति true
पर सेट है), इसलिए परीक्षण विफल हो जाते हैं जबकि NHibernate को कॉन्फ़िगर किया जा रहा है। अगर मैं अपने परीक्षण प्रोजेक्ट में संदर्भ जोड़ता हूं, तो इसे कॉपी किया जाता है और यूनिट परीक्षण काम करते हैं।
मैं क्या गलत कर रहा हूं?
[अपडेट]
यह मैं इस सवाल का जवाब यहाँ मिल गया है लगता है: TFS UnitTesting not deploying local copy assembly to test dir when on build server। यदि मैं अपने डीएएल में कुछ स्थिर विधि में उस प्रकार का संदर्भ जोड़ता हूं, तो जब मैं अपने परीक्षणों में डीएएल असेंबली का संदर्भ देता हूं तो यह स्वचालित रूप से कॉपी हो जाएगा। यह एक हैक की तरह प्रतीत होता है लेकिन आईएमएचओ एक अलग स्क्रिप्ट होने के बजाय एक क्लीनर समाधान है क्योंकि यह "असली" निर्भरता बनाता है।
ऐसा लगता है कि अगर मैं SQL परीक्षण असेंबली को मेरे परीक्षण रन कॉन्फ़िगरेशन (LocalTestRun.testrunconfig फ़ाइल) में अतिरिक्त परिनियोजन आइटम के रूप में जोड़ता हूं तो यह भी कॉपी हो जाता है।
आपके त्वरित उत्तरों के लिए धन्यवाद!
या आप इसे पूर्व-परीक्षण चरण के रूप में आवश्यक असेंबली पर प्रतिलिपि बनाने के लिए अपनी नेंट-या-समकक्ष बिल्ड स्क्रिप्ट में जोड़ सकते हैं। – Gishu
धन्यवाद, लेकिन मैं वास्तव में अपने व्यापार परत परीक्षणों में एक विशिष्ट डेटा असेंबली का संदर्भ देने से बचना चाहता हूं, यह सही नहीं लगता है। – Groo
मैं यूनिट परीक्षण संदर्भों के असेंबली के बारे में बहुत ज्यादा चिंता नहीं करता। –