रन फ़ोल्डर का परीक्षण करने के लिए MSTest प्रतिलिपि फ़ाइल


108

मुझे एक परीक्षण मिला है जिसमें XML फ़ाइल को पढ़ने और फिर पार्स करने की आवश्यकता है। मैं इस फाइल को हर बार टेस्ट रन फ़ोल्डर में कैसे कॉपी कर सकता हूं?

XML फ़ाइल को "यदि नया है तो कॉपी करें" और "कोई नहीं" का संकलन मोड पर सेट किया गया है (क्योंकि यह वास्तव में संकलन योग्य नहीं है)

जवाबों:


131

एक विशेषता का उपयोग करेंDeploymentItem

using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using CarMaker;

namespace DeploymentTest
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod()]
        [DeploymentItem("testFile1.xml")]
        public void ConstructorTest()
        {
            string file = "testFile1.xml";
            Assert.IsTrue(File.Exists(file), "deployment failed: " + file +
                " did not get deployed");
        }
    }
}

17
कक्षा में प्रत्येक परीक्षण को प्रभावित करने के लिए, परिनियोजन इट विशेषता को कक्षा स्तर पर भी निर्दिष्ट किया जा सकता है।
हेंस नेल्स

24
मत भूलो कि तुम एक सबफ़ोल्डर में अपने आइटम है, तो करने के लिए भी शामिल है कि तैनाती उपनिर्देशिका [DeploymentItem ( "सबफ़ोल्डर \ testFile1.xml", "सबफ़ोल्डर")] में
omgtitb

31
थॉमस की टिप्पणी के आगे, RelativePathRoot के लिए डिफ़ॉल्ट मान समाधान फ़ोल्डर है, इसलिए यदि आपका समाधान इस तरह दिखता है (.. \ SolutionFolder \ TestProject \ TestData \ aFile.txt) आपका परिनियोजन ऐसा लगेगा .. ([परिनियोजन) (@ "TestProject \ TestData \ aFile.txt", "TestData")]) .. और आप इस का उपयोग करके परीक्षण में फ़ाइल का संदर्भ लेंगे (स्ट्रिंग फ़ाइल = @ "TestData \ aFile.txt";)
माइकल डौसमैन

6
Dep201ItemAttribute प्रलेखन VS2010 के लिए : इस विशेषता को परीक्षण विधि या परीक्षण वर्ग पर निर्दिष्ट किया जा सकता है।
एलेक्स चे

12
मैंने जो सबसे अधिक पोस्ट देखे हैं, जो कि उल्लेख करने में विफल हैं, यदि आप इसे काम करने के लिए नहीं प्राप्त कर सकते हैं, तो आपको संभवतः "सक्षम परिनियोजन" चेकबॉक्स की जांच करने की आवश्यकता है, जिसे आप टेस्ट - सेटिंग्स संपादित करें -> पा सकते हैं स्थानीय (local.testsettings) -> परिनियोजन टैब। मैंने बस यही किया और फिर तैनाती ने ठीक काम किया।
डेव

26

ऐसा लगता है कि यदि आप समाधान के लिए एक TestSettings फ़ाइल प्रदान करते हैं तो आप "तैनाती सक्षम करें" विकल्प को अनचेक कर सकते हैं और उस ...TestResults\...\outफ़ोल्डर से चलने की कोशिश करने से रोक सकते हैं जहां यह आपकी अतिरिक्त फ़ाइलों की प्रतिलिपि नहीं बनाता है (जब तक कि आप उन्हें एक तैनाती विकल्प नहीं बनाते) ।

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

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

Visual Studio में TestSettings फ़ाइल बनाने के लिए, समाधान पर राइट क्लिक करें और नया आइटम चुनें, और TestSettings टेम्पलेट चुनें। Mstest.exe कमांड प्रॉम्प्ट पर TestSettings फ़ाइल का उपयोग करने के लिए विकल्प जोड़ें, /testsettings:C:\Src\mySolution\myProject\local.testsettings (या उपयुक्त पथ के साथ TeamCity में एक अतिरिक्त कमांड लाइन विकल्प के रूप में जोड़ें)


8

प्रीत उत्तर का उपयोग एकल परीक्षण के लिए आइटमों को तैनात करने के लिए किया जाता है। यदि आप इसे समाधान स्तर पर करना चाहते हैं, तो .testrunconfig सेटिंग्स का उपयोग करें ।



3

मेरे लिए सबसे अच्छा समाधान टेस्टसेटिंग का उपयोग करना है, खासकर अगर कई परीक्षणों को समान डेटाफाइल्स की आवश्यकता होती है।

सबसे पहले एक जांचपेटी फ़ाइल बनाएं, और आपके द्वारा आवश्यक तैनाती आइटम जोड़ें (फ़ाइल या फ़ोल्डर का नाम):

<TestSettings name="Local" id="00ebe0c6-7b64-49c0-80a5-09796270f111" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Description>These are default test settings for a local test run.</Description>
  <Deployment>
    <DeploymentItem filename="Folder1\TestScripts\test.xml" outputDirectory="TestScripts"/>
    <DeploymentItem filename="Folder2\TestData\" outputDirectory="TestData"/>
  </Deployment>
<...../>
  • दृश्य स्टूडियो में चल रहा है, नए टेस्टसेटिंग का चयन करने के लिए "टेस्ट \ टेस्ट सेटिंग्स" मेनू से "टेस्ट सेटिंग्स फ़ाइल चुनें" का उपयोग करें

  • Mstest चल रहा है, / testettings पैरामीटर का उपयोग करके mstest को अपने testettings का उपयोग करें।


2

आप एक वर्ग में DeploymentItem को परिभाषित कर सकते हैं जो असेंबली को सम्मिलित करता है। फिर आप सुनिश्चित हैं कि फ़ाइलों की प्रतिलिपि बनाई जा रही है, भले ही आप कौन सा परीक्षण चलाते हैं।

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

यह भी पता चला है कि .testsettings फ़ाइलों में परिवर्तन स्वचालित रूप से Visual Studio में ताज़ा नहीं होते हैं। इसलिए गवाही में फ़ाइलों / फ़ोल्डरों को तैनाती के बाद, आपको समाधान फ़ाइल को फिर से खोलना होगा और फिर परीक्षणों को चलाना होगा।


2

विजुअल स्टूडियो 2012 में, vstest.console.exe (बिल्ट-इन टेस्ट रनर) आउटपुट डाइर के साथ वर्तमान पथ के रूप में चलता है। इसका मतलब यह है कि आपको केवल अपने परीक्षण में उपयोग की जाने वाली वस्तुओं को 'कॉपी हमेशा' या 'कॉपी करें तो नए' के ​​साथ अपने समाधान में शामिल करने की आवश्यकता है। आपको सामान्य स्थिति के लिए परिनियोजनआइटम विशेषता की आवश्यकता नहीं है। आपके आउटपुट / परीक्षण निर्देशिका के अंदर कमांड लाइन से vstest.console.exe चलाते समय भी यही बात लागू होती है।

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

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