2013-02-19 19 views
6

मैं माइक्रोसॉफ्ट नकली परीक्षण ढांचे का उपयोग कर रहा हूं। इसके चारों ओर कोई रास्ता नहीं है क्योंकि मुझे "विरासत" कोड के कारण शिम/मोल्स दृष्टिकोण का उपयोग करने की आवश्यकता है जिसे मैं नहीं बदल सकता। यह किसी विक्रेता से कोई स्रोत नहीं है, इसे बिना किसी स्रोत के लिखा गया है। इसलिए मैं 3 संभावित ढांचे, टाइपमॉक (महंगे), टेलीरिक के जस्टमैक (महंगी) या माइक्रोसॉफ्ट के झुंड के साथ फंस गया हूं। जैसा कि हमारे पास पहले से ही वीएस अल्टीमेट है, हम नकली चुन रहे हैं। चूंकि अधिकांश लोगों को लगता है कि उन्हें इंटरफेस और/या निर्भरता इंजेक्शन का उपयोग करने के लिए कोड को दोबारा लिखने या संशोधित करने की सलाह देने की आवश्यकता है, मैं आपको सामने बताऊंगा, यह एक विकल्प नहीं है।माइक्रोसॉफ्ट नकली x64 नहीं x86 और v4.5

मेरे सामने आने वाले मुद्दों में से एक यह है कि मैं जिस पुस्तकालय को नकली करने का प्रयास कर रहा हूं वह विशाल है और fakes.exe के 64 बिट संस्करण के उपयोग की आवश्यकता है, न कि 32 बिट (fakes.x86.exe), यह 32 बिट ऐप्स की स्मृति सीमा में चलाता है।

दूसरा मुद्दा यह है कि मुझे v4.5 ढांचे का उपयोग करके नकली लाइब्रेरी को संकलित करने की आवश्यकता है। कमांड लाइन के माध्यम से यह संभव है, हालांकि अनियंत्रित। इसका कारण यह है कि v4.5 में उन्होंने सिस्टम में IeadOnly * इंटरफेस जोड़े। चयन। जेनेरिक और लाइब्रेरी उनका उपयोग करती है। V4 के साथ संकलन, उम्मीदों के अनुसार, प्रकारों को नहीं मिला है, एक त्रुटि फेंकता है।

समस्या, विजुअल स्टूडियो हमेशा x86 संस्करण और v4.0 ढांचे का उपयोग कर रहा है और मुझे इसे ओवरराइड करने का कोई तरीका नहीं मिल रहा है। क्या कोई जानता है कि 64 बिट और v4.5 ढांचे का उपयोग करने के लिए इसे कैसे प्राप्त किया जाए? मेरा वर्तमान विचार दृश्य स्टूडियो की अंतर्निर्मित सामग्री का उपयोग नहीं करना है और केवल कमांड लाइन का उपयोग करना और फ़ाइल को मैन्युअल रूप से संदर्भित करना है। फिर डीएलएल के प्रत्येक अपडेट पर, हम मैन्युअल रूप से इसे फिर से बनायेंगे और संदर्भ अपडेट करेंगे। यह फ़ाइल अक्सर अद्यतन नहीं होती है, इसलिए यह एक संभावना है।

कमांड लाइन मैं मैन्युअल रूप से नकली पुस्तकालय (कोई इस उपयोगी लग सकते) उत्पन्न करने के लिए उपयोग करते हैं:

"c:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\fakes\fakes.exe" <assembly> /tfv:v4.5 

मदद आदेश केवल पता चलता है कि वी 2, v3.5 और v4 tfv के लिए संभव विकल्प हैं, लेकिन सिर्फ kicks के लिए मैंने v4.5 कोशिश की।

मैंने किसी भी cpu के बजाय ऐप पर आर्किटेक्चर को मजबूर करने की कोशिश की है, कोई बदलाव नहीं है जिसमें fakes.exe भाग गया। परीक्षण के लिए .csproj फ़ाइल में देखा गया, कोई परिवर्तन नहीं। fcs.exe में .csproj फ़ाइल में देखा गया है और यह दृश्य स्टूडियो में खोले गए ढांचे के v4 का उपयोग करने के लिए कहता है, v4.5 में बदल गया, ठीक संकलित। नकली कमांड लाइन का इस्तेमाल किया, ठीक संकलित। प्रोजेक्ट में .fakes फ़ाइल में एक विशेषता है जो संकलक संस्करण को परिभाषित करने की अनुमति देता है, लेकिन इसे v4.5 पर सेट करने से अभी भी काम नहीं हुआ है। मुझे लगता है कि v4 से v4.5 के दृश्य स्टूडियो में संस्करण परिवर्तन ने असेंबली संदर्भों को भी बदल दिया है। मेरा अगला प्रयास टेम्पलेट प्रोजेक्ट को आजमाकर बदलना है यदि मैं इसे पा सकूं।

+0

तुम भी यकीन है कि वहाँ है एक कर रहे हैं Fakes.exe का 64 बिट संस्करण? –

+0

हां, आप दिखाए गए आदेश का उपयोग करके इसे मैन्युअल रूप से चला सकते हैं। 32 बिट fakes.x86.exe है। – Edward

+0

मैं इकाई परीक्षण परियोजना को 4.5 पर सेट करके और समाधान को बंद करके इसे फिर से खोलकर v4.5 काम करने में सक्षम था। यकीन नहीं है कि मुझे दृश्य स्टूडियो क्यों बंद करना पड़ा ... दुर्भाग्य से यह 32/64 बिट समस्या को हल नहीं किया। – Edward

उत्तर

1

केवल (यह पहले से ही सेट क्षमा याचना करता है, तो है) कर सकते हैं निम्नलिखित के बारे में सोच:

'टेस्ट' -> 'टेस्ट सेटिंग' -> 'डिफ़ॉल्ट प्रोसेसर आर्किटेक्चर' -> 'X 64'

+0

पहले से ही सेट है। X64 और किसी भी CPU का प्रयास किया। कोई फर्क नहीं। – Edward

+0

प्रोजेक्ट में आर्किटेक्चर को बदलने में कोई अंतर नहीं है, और मैंने अभी टेस्ट सेटिंग्स की कोशिश की है, और कोई बदलाव नहीं है। – Edward

0

दुर्भाग्यवश मैं fakes.x86.exe के बजाय fakes.exe चलाने के लिए दृश्य स्टूडियो कैसे प्राप्त करने में असमर्थ था, यह जानने में असमर्थ था। Fakes.x86.exe पर fakes.exe की प्रतिलिपि बनाने के अलावा। हालांकि, चारों ओर घूमते हुए, माइक्रोसॉफ्ट ने गति बढ़ाने के लिए नकली का उपयोग करने के बारे में एक सुझाव दिया था, केवल बनाए गए नकली डीएलएल का संदर्भ देना था और यह सुनिश्चित करना था कि आवश्यक संदर्भ आपके परीक्षण प्रोजेक्ट में हैं। जो डिफ़ॉल्ट रूप से माइक्रोसॉफ्ट के रूप में प्रतीत होता है। VisualStudio.QualityTools.UnitTestFramework। ऐसा करने से मुझे केवल नकली उपयोग करने की इजाजत नहीं मिलेगी, बल्कि बिल्ड समय भी कम हो जाएगी क्योंकि नकली पुस्तकालय को और उत्पन्न होने की आवश्यकता नहीं है। मेरा पसंदीदा समाधान नहीं है, लेकिन यह गति के साथ एक फायदा है। तो मैं उस मार्ग पर जा रहा हूँ।

उन लोगों के लिए धन्यवाद जिन्होंने इस मुद्दे में मदद की।

संकलन के लिए 4.5 संस्करण प्राप्त करने पर पुन: प्रयास करें ... सुनिश्चित करें कि आपके यूनिट परीक्षण प्रोजेक्ट के लिए फ़ेमवर्क संस्करण 4.5 है और यदि इसे 4.0 से बदल रहा है, तो दृश्य स्टूडियो को बंद करें और फिर से खोलें।

+2

क्या कोई दस्तावेज है जो दिखाता है कि "बनाए गए नकली डीएल का संदर्भ कैसे लें और सुनिश्चित करें कि आवश्यक संदर्भ आपके परीक्षण प्रोजेक्ट में हैं"? – schellack

4

@schellack - यहाँ कैसे मैं "बनाया नकली dll का संदर्भ और सुनिश्चित करें कि आवश्यक संदर्भ अपने परीक्षण परियोजना में कर रहे हैं" करने के लिए

  1. संकलित करें और सभी इकाई परीक्षण स्थानीय रूप से चलाने के लिए, और सुनिश्चित करें कि वे पारित कर पा रहा था है
  2. प्रोजेक्ट की मुख्य निर्देशिका में, .csproj फ़ाइल के समान स्थान, अब "FakesAssemblies" निर्देशिका होनी चाहिए। निर्देशिका में जेनरेट सिस्टम होगा। Web.Mvc.4.0.0.0.Fakes.dll (या जो भी संस्करण संख्या आप उपयोग कर रहे हैं)। System.Web.Mvc.4.0.0.0.Fakes के प्रोजेक्ट संदर्भ में इस निर्देशिका और डीएल पहले से ही एक संकेत पथ है। इस निर्देशिका और डीएल दोनों को स्रोत नियंत्रण में जोड़ा जाना चाहिए। उन्हें वीएस में जोड़ने की आवश्यकता नहीं है।
  3. हमारे सीआई बिल्ड मशीन को संकलित करने के लिए, मुझे प्रोजेक्ट में Microsoft.QualityTools.Testing.Fakes.dll को भी जोड़ना पड़ा।
    1. मैं सी में Microsoft.QualityTools.Testing.Fakes.dll पाया: \ Program Files (x86) \ माइक्रोसॉफ्ट विजुअल स्टूडियो 11.0 \ Common7 \ IDE \ PublicAssemblies
    2. परियोजना के मुख्य निर्देशिका में, के रूप में एक ही स्थान। csproj फ़ाइल, एक "नकली" निर्देशिका है जो प्रोजेक्ट (वीएस में दृश्यमान) के साथ-साथ स्रोत नियंत्रण में शामिल है। इसमें एक है। इसमें फाइल है। मैंने माइक्रोसॉफ्ट की पुष्टि की। QualityTools.Testing.Fakes.dll इस निर्देशिका में वीएस के माध्यम से, ताकि यह परियोजना में भी जोड़ा जा सके।
    3. प्रोजेक्ट की .csproj फ़ाइल में संकेत पथ को Fakes निर्देशिका में देखने के लिए जोड़ा/अपडेट करने की आवश्यकता है। मैं अपने .csproj फ़ाइल में संदर्भ पाया और इसे बदल इस तरह देखने के लिए:

<Reference Include="Microsoft.QualityTools.Testing.Fakes, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> 
    <HintPath>Fakes\Microsoft.QualityTools.Testing.Fakes.dll</HintPath> 
</Reference> 

अब सब कुछ संकलित करता है तथा इकाई परीक्षण चलाने के

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