तैनाती के साथ समस्या


94

मैं वर्तमान में C # .net में लिखी एक "पुरानी" प्रणाली को बनाए रख रहा हूं, कुछ अप्रचलित सुविधाओं को हटाकर कुछ रीफैक्टरिंग कर रहा हूं। धन्यवाद भगवान, पिछले आदमी ने कुछ यूनिट परीक्षण (MSTests) लिखा था। मैं JUnit परीक्षणों के साथ काफी सहज हूं, लेकिन MSTests के साथ अभी तक बहुत कुछ नहीं किया है।

परीक्षण विधियों में एक DeploymentItemविशेषता है, एक पाठ फ़ाइल को निर्दिष्ट करना जो कि व्यापार तर्क विधि द्वारा पार्स किया जाता है जिसे परीक्षण किया जा रहा है और एक 2 DeploymentItemजहां बस एक पथ निर्दिष्ट किया गया है जिसमें टीआईएफ फ़ाइलों का एक गुच्छा है जिसे भी तैनात किया जाना है।

[TestMethod()]
[DeploymentItem(@"files\valid\valid_entries.txt")]
[DeploymentItem(@"files\tif\")]
public void ExistsTifTest()
{
   ...
}

परीक्षण पहले काम करते थे, लेकिन अब मुझे TIF फ़ाइलों के नाम को \ files \ tif निर्देशिका में सम्‍मिलित करना था। एक नियम के अनुसार, TIF फाइलनाम को एक निश्चित पैटर्न से मेल खाना होता है जिसे ExistsTifTest()विधि द्वारा भी जांचा जाता है । अब मुझे नई आवश्यकताओं के लिए उन्हें अनुकूलित करने के लिए फ़ाइल नाम बदलना पड़ा और अचानक टीआईएफ फ़ाइलों को पहले की तरह तैनात नहीं किया गया।

क्या कोई मुझे संकेत दे सकता है कि ऐसा क्यों होता है या इसका क्या कारण हो सकता है? यही बात तब भी होती है जब मैं एक नया टेक्स्ट-फाइल जोड़ता हूं, "my2ndTest.txt" परीक्षण विधि पर "Dep_entries.txt" के बगल में "Dep \ _ \ _ \" \ _ \ _ \ _ \ _ के अनुसार। फ़ाइल परिनियोजित नहीं है?

मैं अब तैनाती पथ को सीधे testrunconfig में परिभाषित करके तैनात की गई छवियों को प्राप्त कर रहा हूं, लेकिन मैं यह समझना चाहता हूं कि ये चीजें क्यों होती हैं या उदाहरण के लिए मेरी नई फ़ाइल "my2ndTest.txt" दूसरों को करते समय तैनात नहीं होती है।


2
यहां एक बड़ा गट्टा यह महसूस करने के लिए है कि परिनियोजनइमटअर्ट में निर्दिष्ट सभी आइटम उस स्थान पर कॉपी किए जाएंगे जहां से आपकी परीक्षण असेंबलियां चलती हैं। दूसरे शब्दों में, यदि आप उम्मीद कर रहे थे कि यह आपकी निर्देशिका संरचना को संरक्षित करेगा तो आप भाग्य से बाहर हो जाएंगे। यदि आपको इसे किसी विशिष्ट निर्देशिका में कॉपी करने की आवश्यकता है, तो दो पैरामीटर Dep तैनातीItem (स्रोत, outputDir) संस्करण का उपयोग करें। FYI करें - आप यह जानने के लिए पुराने स्कूल में जा सकते हैं कि आपके एक परीक्षण में System.Console.WriteLine (System.Environment.CurrentDirectory) में ड्रॉप करके MsTest के लिए फ़ाइलें कहाँ से चलाई जाती हैं। NCrunch में यह समस्या नहीं थी!
कोडमोनकीकिंग

जवाबों:


111

DeploymentItem थोड़ा गड़बड़ है।

आपके समाधान की प्रत्येक फ़ाइल में वीएस.नेट में "कॉपी टू आउटपुट फ़ोल्डर" सेटिंग होगी। आउटपुट फ़ोल्डर में फ़ाइलों को प्राप्त करने के लिए आपको "हमेशा कॉपी करें" (या समान) होना चाहिए।

जांचें कि आपको यह सेट नई फ़ाइलों के लिए मिला है। यदि आपके पास यह सेट नहीं है, तो फ़ाइलें आउटपुट फ़ोल्डर में कॉपी नहीं होंगी, और फिर उन्हें आउटपुट फ़ोल्डर से उस फ़ोल्डर में तैनात नहीं किया जा सकता जहां MSTest इसे सामान करता है।

व्यक्तिगत रूप से, अगर मेरे पास ऐसी फाइलें हैं जिन्हें मुझे अपनी इकाई परीक्षणों की आवश्यकता है, तो मैंने पाया है कि उन फ़ाइलों को एक असेंबली में संसाधनों के रूप में एम्बेड करना, और परीक्षणों के दौरान स्वयं उस असेंबली "अनपैक" करना चीजों को करने का एक अधिक अनुमानित तरीका है। YMMV।

नोट: ये टिप्पणियां VS2010 के साथ मेरे अनुभव पर आधारित हैं। मेरे जवाब पर टिप्पणियाँ सुझाव देंगी कि यह VS2012 की समस्या नहीं है। मैं अभी भी टिप्पणियों द्वारा खड़ा हूं कि एम्बेडेड संसाधनों का उपयोग करने में "जादू" कम होता है और, मेरे लिए, मेरी इकाई परीक्षणों के "व्यवस्था" चरण को और अधिक स्पष्ट करता है।


3
आउटपुट निर्देशिका की प्रतिलिपि कभी भी प्रभावित नहीं करती है कि MSTest फ़ाइलों को कैसे प्रदर्शित करता है। यह उत्तर गलत है।
kzu

19
VS2010 प्रीमियम पर, यह परिवर्तन (और कोई अन्य परिवर्तन नहीं) करने से फ़ाइल की तैनाती हो गई। इस प्रकार, मैं वास्तविक सबूतों के आधार पर यह निष्कर्ष निकालता हूं कि यह MsTest परिनियोजन को प्रभावित करता है।
जॉनसनकॉनाश

1
माना। मैंने इस एकल बदलाव को देखा है परिनियोजन इटेम उल्टा हो जाता है।
मार्टिन पीक

2
ऐसा प्रतीत होता है कि अब VS2012 की आवश्यकता नहीं है। "डुप्लीकेट नॉट कॉपी" पर सेट "कॉपी टू आउटपुट फोल्डर" के साथ मेरी तैनाती का सामान तैनात किया जा रहा है।
माइक

29
जब यह आपके द्वारा प्रदान की गई एकल फ़ाइल की प्रतिलिपि बनाने में असमर्थ है, तो यह बहुत अच्छा है कि परिनियोजनआइटम आपको कोई सूचना नहीं देता है।

74

VS2010 में, मेरे Local.testsettings में "अनियोजित परिनियोजन सक्षम करें" था और परिनियोजन सुविधा विशेषता काम नहीं कर रही थी। मैंने इसकी जाँच की और सब कुछ ठीक रहा। आशा है कि ये आपकी मदद करेगा!


2
मैं एक ईंट की दीवार के खिलाफ अपना सिर पीट रहा हूँ उम्र के लिए यह काम करने की कोशिश कर रहा है .... धन्यवाद!
मैट-मफलिन

12
मुझे लगता है कि यह अच्छा होता अगर फ्रेमवर्क ने चेतावनी जारी की कि यदि यह सेटिंग बंद हो जाती है तो परिनियोजन इट्स विशेषताओं को अनदेखा किया जा रहा है। मैंने अपनी डेस्क पर एक अच्छा अवतल छाप भी डाला।
एलन मैकबी - एमएसएफटी

2
ध्यान दें कि Local.testsettings समाधान आइटम में है
मैथ्यू लॉक

मुझे उन निर्देशिकाओं को भी जोड़ना था, जिन्हें मैं उन वस्तुओं में शामिल करना चाहता था जिन्हें मैं Local.testsettings में भी तैनात करना चाहता था: i.imgur.com/p1z3m9R.png
मैथ्यू लॉक

2018 में VS2017 का उपयोग करते हुए 'सक्षम परिनियोजन' की जाँच अभी भी इस समस्या का समाधान है। और दुख की बात है कि अभी भी विजुअल स्टूडियो से चेतावनी है। तो इस समाधान के लिए धन्यवाद।
डॉन एच।

19

मैंने भी इसी तरह की समस्याओं का सामना किया है, लेकिन मुझे इसके लिए आसान 3 चरण समाधान मिले:

मान लें कि आपकी फ़ोल्डर संरचना इस प्रकार है: SolutionFolder\ TestProjectFolder\ SubFolder\

  1. "समाधान आइटम / Local.testsettings"> "परिनियोजन"> चेक करें "परिनियोजन सक्षम करें" पर जाएं
  2. यदि आप VS2010 का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आप जिस भी फाइल को तैनात करना चाहते हैं, उनकी "कॉपी टू आउटपुट फोल्डर" संपत्ति "हमेशा कॉपी करें" या "कॉपी करें तो नया" सेट करें।
  3. अपने TestMethod को किसी एक के साथ संलग्न करें:
    • [DeploymentItem(@"TestProjectFolder\SubFolder")]<SubFolder>टेस्ट रन निर्देशिका की सभी सामग्री को तैनात करने के लिए
    • [DeploymentItem(@"TestProjectFolder\SubFolder", "TargetFolder")]टेस्ट रन डायरेक्टरी में सभी सामग्री को तैनात <SubFolder>करना<TargetFolder>

MSTest के बारे में एक अंतिम नोट (कम से कम VS2010 के लिए):

यदि आप चाहते हैं <TargetFolder>के रूप में एक ही नाम हो <SubFolder>का उपयोग कर, [DeploymentItem(@"SubFolder", @"SubFolder")]चुपचाप असफल हो जायेगी रूप MSTest धावक एक मूर्खतापूर्ण बढ़त मामले करता है। यही कारण है कि आप उपसर्ग चाहिए <SubFolder>साथ <TestProjectFolder>इतनी के रूप में:[DeploymentItem(@"TestProjectFolder\SubFolder", @"SubFolder")]


SubFolder नामकरण विफलता के बारे में नोट एक रत्न है।
आरजे लोहान

1
वीएस 2015 थोड़ा अलग लगता है। मुझे तैनाती में "TestPojectFolder" भाग को हटाने की जरूरत थी।
1378

15

उम्मीद के लिए किसी और की मदद करने के लिए: मैंने यहाँ सभी सुझावों की कोशिश की और अभी भी मेरी तैनाती की चीज़ की नकल नहीं की जा रही है।

मुझे क्या करना था ( जैसा कि यहाँ सुझाया गया है ) तैनाती के लिए दूसरा पैरामीटर जोड़ना था

[DeploymentItem(@"UnitTestData\TestData.xml", "UnitTestData")]

10

यदि आप अपनी .testrunconfig फ़ाइल में जाते हैं और परिनियोजन "सक्षम परिनियोजन को अनचेक करें" के तहत, परीक्षण उनके सामान्य स्थान पर चलेंगे, और यूनिट परीक्षण के बाहर ऐप चलाने पर सब कुछ ऐसे ही चलेगा।


इसके साथ कुछ मुद्दे भी थे। पीएम के रूप में मेरे पास देव द्वारा उपयोग किए जाने वाले सभी साधनों तक पहुंच नहीं है। इस मामले में ReSharper ने फ़ाइल को सही तरीके से कॉपी किया जबकि MSTest ऐसा करने में विफल रहा। -> देव के ठीक होने पर मुझे त्रुटियाँ हुईं। मेरे टेस्ट के लिए 'टेस्ट-> एडिट टेस्ट सेटिंग्स -> लोकल सेटिंग्स -> डिप्लॉयमेंट' सहित फाइल को मेरे MSTest उपयोग के लिए नियत करें।
sonstabo

9

यह संभवत: आपकी सटीक समस्या से संबंधित नहीं है, लेकिन यहां कुछ सुझाव मुझे [तैनाती] के साथ मिले हैं।

  1. कॉपी टू आउटपुट डायरेक्टरी को हमेशा कॉपी करने के लिए सेट किया जाना चाहिए।

यह है नहीं है जब [TestInitialize] विशेषता के साथ प्रयोग किया काम

[TestInitialize]
[DeploymentItem("test.xlsx")]
public void Setup()
{

यह आपके [TestMethod] पर होना चाहिए, जैसे

    [TestInitialize]
    public void Setup()
    {
        string spreadsheet = Path.GetFullPath("test.xlsx");
        Assert.IsTrue(File.Exists(spreadsheet));
        ...
    }

    [TestMethod]
    [DeploymentItem("test.xlsx")]
    public void ExcelQuestionParser_Reads_XmlElements()
    {
        ...
    }

1
यह एक पागलपनपूर्ण कष्टप्रद सीमा है। मुझे लगता है कि कई मामलों के लिए, तैनाती का समय इनिशियलाइज़ में होना चाहिए। क्या होगा यदि मेरे सभी परीक्षण समान सहायक कलाकृतियों का उपयोग करते हैं? मुझे लगता है कि मैं परीक्षण विधियों के दर्जनों में डेकोरेटर्स को कॉपी और पेस्ट करने वाला हूं? हास्यास्पद।
रायनमैन

5

यहाँ सूचीबद्ध अन्य सभी सुझावों की कोशिश करने के बाद भी मैं समझ नहीं पाया कि क्या चल रहा था। अंत में मुझे पता चला कि टेस्ट / टेस्ट सेटिंग्स मेनू के तहत कोई सेटिंग फ़ाइल नहीं चुनी गई थी, जिसका अर्थ था कि तैनाती सक्षम नहीं हो रही थी। मैंने Test / Test Settings / Select Test Settings File मेनू आइटम पर क्लिक किया, Local.TestSettings फ़ाइल का चयन किया, फिर सब कुछ काम किया।


4

यकीन नहीं होता कि यह वास्तव में सवाल का जवाब देता है, लेकिन यह कुछ मदद कर सकता है। सबसे पहले, मुझे काम करने के लिए तैनाती के लिए "सक्षम तैनाती" बॉक्स की जांच करनी चाहिए। दूसरा, डॉक्टर का कहना है कि स्रोत पथ "प्रोजेक्ट पथ के सापेक्ष" है, जो सबसे पहले मैंने प्रोजेक्ट फ़ोल्डर से मतलब लिया था। वास्तव में, यह बिल्ड आउटपुट फ़ोल्डर को संदर्भित करता है। इसलिए अगर मेरे पास 'TestFiles' नामक एक परियोजना फ़ोल्डर है और उसमें एक फ़ाइल है जिसे Testdata.xmlविशेषता का उपयोग करके इस तरह से काम नहीं किया जाता है:

[DeploymentItem(@"TestFiles\Testdata.xml")] 

मैं Testdata.xmlफ़ाइल को चिह्नित कर सकता हूं Copy Always, ताकि बिल्ड आउटपुट फ़ोल्डर (जैसे, Debug\TestFiles\TestData.xml) के तहत एक कॉपी लगा दे । परिनियोजन तंत्र तब उस पथ पर स्थित फ़ाइल की प्रति ( TestFiles\Testdata.xml) निर्माण आउटपुट के सापेक्ष मिलेगा । या, मैं इस तरह से विशेषता निर्धारित कर सकता हूं:

[DeploymentItem(@"..\\..\TestFiles\Testdata.xml")] 

और परिनियोजन तंत्र को मूल फ़ाइल मिलेगी। तो या तो काम करता है, लेकिन मैंने देखा है कि Copy Alwaysमैं कभी-कभी एक ही समस्या में चला जाता हूं कि ऐप में संपादन करते समय मेरे पास एक ही समस्या है। किसी प्रोजेक्ट में फाइल को कॉन्फ़िगर करना - अगर मैं कोड नहीं बदलता हूं या एक पुनर्निर्माण को बाध्य करता हूं, तो कुछ भी चिह्नित फ़ाइलों की प्रतिलिपि ट्रिगर नहीं करता है। बिल्ड पर कॉपी किया जाए।


सापेक्ष पथ मेरे लिए मुद्दा था और इसने इसे तय किया। मैंने परिनियोजन इट्स स्टेटमेंट्स के 2 सेट जोड़े, यह इस बात पर निर्भर करता है कि परीक्षण कैसे चलाए गए थे।
एड बेयेट्स

3

मेरे पास पहले परिनियोजन ध्वज अक्षम था। लेकिन मैं इसे सक्षम करने के बाद भी, किसी अज्ञात कारण से कुछ भी लक्ष्य DLL अभी भी कॉपी किया जाएगा। दुर्घटनावश मैंने टेस्ट रन विंडो खोली और पिछले सभी रनों को मार डाला और जादुई रूप से मैंने सभी डीएलएल और फाइलों को पाया जो मुझे टेस्ट फोल्डर में बहुत अगले रन में चाहिए थे ... बहुत भ्रामक।


2

मुझे तैनाती के लिए फाइलें प्राप्त करने में बड़ी समस्या आ रही थी - ऊपर दिए गए सभी सुझावों की कोशिश कर रहा था।

फिर मैंने VS2010 बंद कर दिया; इसे फिर से शुरू किया, समाधान को लोड किया और सब कुछ काम किया। (!)

मैंने कुछ जाँच की; स्थानीय पर 'तैनाती सक्षम करें' फ्लैग सेट करने के बाद। टेस्टसेटिंग के अनुसार आपको केवल टेस्ट रिजल्ट विंडो से टेस्ट को फिर से नहीं चलाना चाहिए। आपको एक अलग परीक्षण चलाकर या अपने समाधान को फिर से खोलकर UI जैसे पिछले टेस्ट रन को निकालना होगा।


2

उपयोग न करें DeploymentItem

इसे सही ढंग से स्थापित करना बहुत कठिन है और यह मेरे रीशर टेस्ट रनर के साथ काम नहीं कर रहा था और न ही विजुअल स्टूडियो 2017 में एमएसटीईएसटी के लिए मूल निवासी।

इसके बजाय, अपनी डेटा फ़ाइल पर राइट क्लिक करें, और गुणों का चयन करें । आउटपुट निर्देशिका में प्रतिलिपि का चयन करें: हमेशा

अब अपने परीक्षण में, यह करो। निर्देशिका केवल परीक्षण परियोजना के सापेक्ष फ़ाइल की निर्देशिका है। आसान।

    [TestMethod()]
    public void ParseProductsTest()
    {
        // Arrange
        var file = @"Features\Products\Files\Workbook_2017.xlsx";
        var fileStream = File.Open(file, FileMode.Open);
        // etc.
    }

यह स्वचालित निर्माण और परीक्षण प्रणालियों के साथ अच्छी तरह से काम करता है।


1

चूँकि मुझे हमेशा से डिप्लॉयमेंट का पता चला कि इसमें गड़बड़ है, मैं पोस्ट-बिल्ड स्क्रिप्ट का उपयोग करके ऐसी फ़ाइलों की तैनाती करता हूँ। - सुनिश्चित करें कि आपके द्वारा कॉपी की गई फाइलें कॉपी ऑलवेज प्रॉपर्टी सेट हैं। - अपने टेस्ट प्रोजेक्ट पोस्ट-बिल्ड स्क्रिप्ट को बिल्ड टारगेट फोल्डर (बिन \ डीबग) से उन लोकेशन पर कॉपी करें, जहां आपका टेस्ट उनसे उम्मीद कर रहा है।


1

VS2010 के लिए यह प्रयास करें। इसलिए आपको हर tif
Remove के लिए DeployItems को जोड़ने की आवश्यकता नहीं है

[DeploymentItem(@"files\valid\valid_entries.txt")]  
[DeploymentItem(@"files\tif\")]  

एक परीक्षण कॉन्फ़िगरेशन जोड़ें।
- समाधान एक्सप्लोरर में समाधान नोड पर राइट-क्लिक करें
- जोड़ें -> नई आइटम ...
- बाईं ओर परीक्षण सेटिंग्स नोड का चयन करें, दाईं ओर आइटम का चयन
करें - क्लिक करें जोड़ें

इसे कॉल करें TDD

चुनें TDDके तहत TestMenu> Edit Testsettings

परिनियोजन पर क्लिक करें। इसे सक्षम करें और फिर इच्छित फ़ाइलों और निर्देशिकाओं को जोड़ें। समाधान के सापेक्ष एक मार्ग होगा। फाइलों को डाला जाएगा। मूल फ़ाइल यहाँ उदाहरण के लिए हैं:

D:\Users\Patrik\Documents\Visual Studio 2010\Projects\DCArrDate\WebMVCDCArrDate\Trunk\WebMVCDCArrDate\Authority.xml  

जब मैं अपना यूनिट टेस्ट चलाता हूं तो इसकी नकल हो जाती है

D:\Users\Patrik\Documents\Visual Studio 2010\Projects\DCArrDate\WebMVCDCArrDate\Trunk\WebMVCDCArrDate.Tests\bin\Debug\TestResults\Patrik_HERKULES 2011-12-17 18_03_27\Authority.xml  

टेस्टकोड में मैं इसे कहता हूं:

[TestMethod()]
public void Read_AuthorityFiles_And_ParseXML_To_Make_Dictonary()  
{  
  string authorityFile = "Authority.xml";  
  var Xmldoc = XDocument.Load(authorityFile);  

कॉपी ऑलवेज चुनने की कोई आवश्यकता नहीं है; फाइलों को टेस्टप्रोजेक्ट में डालें; टेस्टकोड में हार्डकोड पथ जोड़ें। मेरे लिए इस समाधान ने सबसे अच्छा काम किया। मैंने डिप्लॉयमेंट इट के साथ कोशिश की, हमेशा कॉपी करें लेकिन यह मेरी पसंद के हिसाब से नहीं था।


1

उन लोगों के लिए जो तैनाती की गड़बड़ी से बचना पसंद करते हैं और @ मर्टिन पेक (स्वीकृत जवाब) द्वारा सुझाए गए दृष्टिकोण को अपनाते हैं, आप एम्बेडेड संसाधन की सामग्री का उपयोग करने के लिए निम्न कोड का उपयोग कर सकते हैं:

public string GetEmbeddedResource(string fullyQulifiedResourceName)
{
    var assembly = Assembly.GetExecutingAssembly();
    // NOTE resourceName is of the format "Namespace.Class.File.extension";

    using (Stream stream = assembly.GetManifestResourceStream(fullyQulifiedResourceName))
    using (StreamReader reader = new StreamReader(stream))
    {
        string result = reader.ReadToEnd();
    }
}

विवरण के लिए, यह SO थ्रेड देखें


1
मेरे पास असेंबली के साथ समस्याएँ हैं। GetExecutingAssembly () बिल्ड सर्वर पर चलने पर -> यह वास्तविक टेस्ट असेंबली के बजाय टेस्ट रनर को लौटा देगा। असेंबली में इसे एक निश्चित प्रकार से दर्शाकर असेंबली प्राप्त करना (उदाहरण के लिए आपके टेस्टक्लास) ने मेरे लिए इसे हल किया।
Arno पीटर्स

1

मेरे लिए, मूल कारण पूरी तरह से कुछ और था: मेरे परीक्षणों द्वारा प्रयोग किए जा रहे उत्पादन कोड का नाम बदल दिया गया और / या .xml परीक्षण फ़ाइल को हटा दिया गया।

इसलिए, जब मैं अपने परीक्षण व्यक्तिगत रूप से चलाऊंगा, तो वे पास हो जाएंगे, लेकिन जब उन सभी को एक साथ चलाते हुए, दूसरा और बाद का परीक्षण "फ़ाइल नहीं मिला" त्रुटियों के साथ विफल हो जाएगा (जो कि मूल रूप से मैं गलत साबित हुआ क्योंकि DeploymentItemविशेषता काम नहीं कर रही है)।

मेरा समाधान यह था कि प्रत्येक व्यक्तिगत परीक्षा पद्धति में तैनात फ़ाइल ( इस तकनीक का उपयोग करके ) की एक प्रतिलिपि बनाई जाए, और फिर उत्पादन कोड का परीक्षण किया जाए जो मूल की बजाय कॉपी की गई फ़ाइल का उपयोग करें।


1

हमने डिप्लॉयमेंट आइटम की समस्या के कारण बहुत समय बिताया है ताकि इसे स्थानीय unittest run और teamcity unittest reun में भी हल किया जा सके। यह आसान नहीं है।

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


मुझे पता है कि यह एक बहुत पुराना उत्तर है, लेकिन यदि आप इस बारे में विस्तार से बताने में सक्षम हैं कि आप ProcessExplorer का उपयोग कैसे करते हैं, तो यह उपयोगी होगा। मैं यह नहीं देख रहा हूँ कि फ़ाइल संचालन कैसे देखें, उन्हें बहुत कम फ़िल्टर करें ...
डेविड

1

परिनियोजन विशेषता की जाँच करने की आवश्यकता होने के अलावा, मैंने परिनियोजन इट विशेषता के बारे में कुछ और खोज की।

[TestMethod()]
[DeploymentItem("folder\subfolder\deploymentFile.txt")]
public void TestMethod1()
{
   ...
}

आपकी परिनियोजनफ़ाइल .xt को समाधान फ़ाइल के सापेक्ष होना चाहिए न कि testfile.cs पर।

यहां छवि विवरण दर्ज करें


मैं अंत में मेरे तैनाती तैनाती स्रोत परीक्षण परियोजना के सापेक्ष होने से यह काम मिल गया। तो मेरे पास मेरे समाधान में एक परियोजना है, "Service.Tests"। वहां मेरे पास एक फ़ोल्डर "FilesForTests" है, जिसमें वे फाइलें हैं जिन्हें मैं कॉपी करना चाहता हूं। मैंने इस्तेमाल किया [DeploymentItem(@"FilesForTests\MyFile.txt", "FilesForTests")]। मुझे लगता है कि हम एक ही बात कह रहे हैं?
डेविड

1

मैं VS2013 में इस पर काम कर रहा हूं। यह काम पाने के लिए मेरे निष्कर्ष:

  • यदि नया / हमेशा कॉपी करें: MANDATORY कॉपी करें तो आउटपुट डायरेक्टरी में कॉपी को सेट किया जाना चाहिए।
  • "। परिनियोजन सक्षम करें"। सेटिंग: आवश्यक नहीं है। मुझे यह काम कर रहा है बिना .TestSettings फ़ाइल बिल्कुल।
  • किसी फ़ोल्डर को 2 पैरामीटर के रूप में निर्दिष्ट करना: वैकल्पिक। आउटपुट फ़ोल्डर लेआउट को आकार देता है, बिना ठीक काम करता है।
  • फ़ाइल नाम में SPACES: इससे मुझे सिरदर्द होता है - फ़ाइल की प्रतिलिपि कभी नहीं बनाई गई। रिक्त स्थान हटाकर इसे ठीक कर दिया गया। भागने के पात्रों में अभी तक नहीं देखा गया है।

एक टिप मैंने कठिन तरीका भी सीखा है: प्रत्येक व्यक्तिगत परीक्षा में इस विशेषता को जोड़ना न भूलें। टेस्‍ट्रन में पहले एनेज्‍ड टेस्‍ट पर फाइल कॉपी की जाती है, लेकिन जब परीक्षण का क्रम बदल गया और गैर-एग्‍जेक्‍टेड टेस्‍ट ने फाइल को खोजने की कोशिश की तो वह गायब रहा।


अपना उत्तर पाने से पहले यहाँ सब कुछ करने की कोशिश की, जो कि सबसे आखिरी था। अपराधी: FILENAME में रिक्त स्थान! अच्छा कॉलआउट।
जौल्मदेव १२'१५

1
विजुअल स्टूडियो 2019 का उपयोग करना। "कॉपी करें यदि नया" इसे ठीक किया। मुझे "हमेशा कॉपी" से नफरत है क्योंकि यह प्रोजेक्ट को डिबग या वृद्धिशील बिल्ड जैसे कई परिदृश्यों पर पुनर्निर्माण करने के लिए मजबूर करता है।
गेरार्डो ग्रिग्नोली

माना। यदि नया है तो कॉपी शामिल करने के लिए मैंने अपना उत्तर अपडेट कर दिया है।
अरनो पीटर्स

0

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

मेरे पास मूल रूप से [परिनियोजनआइटम (@ "Foo \", @ "Foo \")] था और यह उम्मीद कर रहा था कि यह मेरे Foo \ Bar को तैनात करेगा। मुझे विशेष रूप से इसे [Dep तैनातीItem (@ "Foo \ Bar \", @ "Foo \ Bar \")] में बदलना पड़ा और अब यह एक आकर्षण की तरह काम करता है।


0

मैंने भी ऐसी ही समस्याओं का सामना किया है। मेरे पास उपर्युक्त सभी चरण हैं, लेकिन फिर भी कोई भाग्य नहीं है। मैं VS2010 का उपयोग कर रहा हूं। तब मैंने पाया है कि $ मेनू> टेस्ट> सक्रिय टेस्ट सेटिंग चुनें> ट्रेस और टेस्ट प्रभाव का चयन किया गया था। ट्रेस को बदलने और लोकल पर परीक्षण प्रभाव डालने के बाद इसने काम करना शुरू किया । इस पृष्ठ में परिणाम फ़ोल्डर का परीक्षण करने के लिए फ़ाइलों की प्रतिलिपि बनाने के बारे में बहुत ही संसाधनपूर्ण जानकारी है, मैं इस अनुभव को भी जोड़ना चाहता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.