2011-11-10 18 views
8

मैं चलाने के लिए MSTest.exe प्राप्त करने का प्रयास कर रहा हूं, और ऐसा लगता है जैसे testcontainer ठीक से पढ़ा नहीं जा रहा है; जबकि मेरे परीक्षण सभी विजुअल स्टूडियो के भीतर सभी कॉन्फ़िगरेशन वातावरण में सफलतापूर्वक चलते हैं।MSTest.exe सभी आवश्यक परियोजना डीएलएल की प्रतिलिपि नहीं बना रहा है?

आदेश मैं उपयोग कर रहा हूँ है:

"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" /nologo /usestderr /testSettings:"C:\temp\MyProject\Sources\MyProject\Local.testsettings" /searchpathroot:"C:\temp\MyProject\Binaries" /resultsfileroot:"C:\temp\MyProject\TestResults" /testcontainer:"C:\temp\MyProject\Binaries\MyProject.Services.Server.UnitTests.dll" 

testcontainer परियोजना के भीतर परियोजना संदर्भ इस तरह दिखेगा:

<ItemGroup> 
    <ProjectReference Include="..\..\Services\MyProject.Services.Server\MyProject.Services.Server.csproj"> 
     <Project>{92EC1999-CC0C-47DD-A4D6-17C3B1233C50}</Project> 
     <Name>MyProject.Services.Server</Name> 
    </ProjectReference> 
    <ProjectReference Include="..\..\SvcConfiguration\MyProject.ServiceConfiguration.Interfaces\MyProject.ServiceConfiguration.Interfaces.csproj"> 
     <Project>{8E2E7BA9-75DB-458E-A184-AC1030EAD581}</Project> 
     <Name>MyProject.ServiceConfiguration.Interfaces</Name> 
    </ProjectReference> 
    <ProjectReference Include="..\..\SvcConfiguration\MyProject.ServiceConfiguration.Services\MyProject.ServiceConfiguration.Services.csproj"> 
     <Project>{39514766-23A8-45DB-96EA-B6B4D9C8B086}</Project> 
     <Name>MyProject.ServiceConfiguration.Services</Name> 
    </ProjectReference> 
</ItemGroup> 

न तो ServiceConfiguration.Interfaces है और न ही ServiceConfiguration.Services DLL में रखा जाता है TestResults में आउट फ़ोल्डर।

प्रोजेक्ट GUID संदर्भ और संदर्भित परियोजनाओं के बीच मेल खाता है।

क्या ऐसा कुछ है जो मुझे कमांड लाइन में याद आ रहा है?

+0

मैं विकल्प "/ searchpathroot" में [प्रलेखन] (http://msdn.microsoft.com/en-us/library/ms182489 (V नहीं मिला है = vs.100) .aspx)। – Andreas

उत्तर

6

mstest.exe विनीत सभी संदर्भित dll का नहीं संदर्भित करेंगे: http://www.dotnetthoughts.net/2011/11/22/mstest-exe-does-not-deploy-all-items/

+4

मैं यूनिट टेस्ट डीएल के AssemblyInIn.cs में एक विधि बनाकर काम करता हूं, जहां मैं स्पष्ट रूप से उन डेल को डमी कॉल करता हूं: इसकी आवश्यकता होती है (आमतौर पर प्लगइन प्रकार dll: s क्योंकि उन्हें स्पष्ट रूप से कॉल नहीं किया जाता है परीक्षण कोड स्वयं)। –

+0

लिंक टूटा हुआ है .. – Xena

4

आप एक परीक्षण सेटिंग्स फ़ाइल का उपयोग कर निर्दिष्ट कर सकते हैं कि वास्तव में क्या फ़ाइलें परीक्षण निर्देशिका में कॉपी कर रहे हैं। आप विजुअल स्टूडियो में कई टेस्ट सेटिंग्स फाइलें बना सकते हैं, इसलिए आपके पास वीएस से चलने के लिए एक और दूसरा एमएसटीएस्ट से चलने के लिए हो सकता है, दूसरा सर्वर सीआई बनाता है, और इसी तरह। अधिक जानकारी के लिए यहां देखें: Create Test Settings to Run Automated Tests from Visual Studio

कमांड लाइन पर निर्दिष्ट करने के लिए /testsettings:<filename> विकल्प का उपयोग करें।

लोगों को पहली बार भ्रमित करने के लिए क्या लगता है कि डिफ़ॉल्ट रूप से, एमएसटीएस्ट की "वर्तमान निर्देशिका" एमएसटीएस्ट लॉन्च निर्देशिका नहीं है, लेकिन परीक्षण परिणामों का आउट फ़ोल्डर नहीं है।

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

हालांकि, मूल डीएलएल और भी समस्याग्रस्त हैं, और मैंने पाया है कि उन्हें प्रबंधित कॉन्फ़िगरेशन (परीक्षण सेटिंग्स) में उनके लिए काम करता है, जैसे कि प्रबंधित असेंबली के लिए।

+0

आप अपने मूल सेटिंग्स में इन देशी DLL को कैसे कॉन्फ़िगर करेंगे? – sebas2day

1

चाहे वह आउट हो या बिल्ड क्षेत्र अलग-अलग कारकों पर निर्भर करता है, हालांकि, ऐसी स्थितियों के लिए जहां यह अभी भी काम नहीं करता है, आप एक परिनियोजन इटैम "हैक" का उपयोग कर सकते हैं, या अपनी रनेटिंग फ़ाइल को ट्वीक कर सकते हैं।

इस जवाब पर देखने का प्रयास करें: https://stackoverflow.com/a/33344573/2537017