2011-06-10 10 views
5

मेरे पास एक यूनिट परीक्षण है जो एमईएफ का उपयोग करने वाले कुछ कोड पर निर्भर करता है। जब मैं परीक्षण चलाता हूं, एमईएफ (मुझे विश्वास है) एमईएफ इकाई परीक्षण की निष्पादन निर्देशिका में सभी डीएलएल के लिए सभी निर्भर डीएलएल लोड करने का प्रयास करता है।वीएस -2010 यूनिट परीक्षण निर्देशिका में सभी डीएलएल को/bin/डीबग में क्यों कॉपी नहीं करता है?

समस्या यह है कि किसी कारण से वीएस -2010 सभी डीएलएल को/bin/डीबग निर्देशिका से इकाई परीक्षण की निष्पादन निर्देशिका में कॉपी नहीं कर रहा है, और मुझे नहीं पता कि क्यों। यहां एक उदाहरण दिया गया है:

यूनिट परीक्षण शिकायत कर रहा है वह असेंबली ए लोड नहीं कर सकता है, इसलिए मैं प्रोजेक्ट बी को शामिल करता हूं जिसमें असेंबली ए निर्भरता के रूप में है। यूनिट टेस्ट प्रोजेक्ट के लिए/bin/डीबग फ़ोल्डर में, सभी डीएलएल वहां हैं, लेकिन जब मैं इकाई परीक्षण की निष्पादन निर्देशिका को देखता हूं, तो असेंबली ए नहीं है।

मैं इकाई परीक्षण परियोजना को एक-एक करके डीएलएल जोड़ना शुरू कर सकता हूं, लेकिन मुझे लगता है कि मुझे यह करना चाहिए।

विचार?

धन्यवाद, मार्क

उत्तर

4

शायद DeploymentItem विशेषता मदद कर सकते हैं, http://msdn.microsoft.com/en-us/library/ms182475.aspx:

DeploymentItem विशेषता के पैरामीटर के लिए, फ़ोल्डर या फ़ाइल है कि आप इस परीक्षण के लिए तैनात करना चाहते हैं। आप या तो पूर्ण पथ या रिश्तेदार पथ का उपयोग कर सकते हैं। सापेक्ष पथ संबंधित रिश्तेदार पैथ रूट सेटिंग .testrunconfig फ़ाइल में पाए जाते हैं।

[TestMethod] 
[DeploymentItem("MyTestProject\\testdatasource.mdb")] 
public void TestMethod1() 
{ 

// TODO: Add test logic here 

} 
0

आप एक संदर्भ के रूप परियोजना में जोड़ सकते हैं और यह सुलझा होगा। राइट प्रोजेक्ट टैब जोड़ें राइट क्लिक करें।

टीएच बिन \ डीबग फ़ोल्डर में डीएलएल को स्वयं न करें।

+1

उसने कुछ कारण से काम नहीं कर रहा ... पता नहीं क्यों – MStodd

0

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

यह भी ध्यान रखें कि जब आप एमएसटीएस्ट के साथ टेस्टरुन निष्पादित करते हैं, तो यह संकलन प्रक्रिया नहीं है जो असेंबली की प्रतिलिपि बनाता है - एक पोस्ट संकलन चरण है जो परीक्षणों के लिए निर्भरता को एक विशेष "परीक्षण चलाने" फ़ोल्डर में प्रतिलिपि बनाता है, आमतौर पर टेस्ट रेसल्ट्स के तहत। विजुअल स्टूडियो "Test Deployment" नामक एक सुविधा का समर्थन करता है जो परीक्षण परीक्षण में अतिरिक्त परीक्षण डेटा इत्यादि की प्रतिलिपि बना सकता है।

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