代码之家  ›  专栏  ›  技术社区  ›  Aaron Powell

MSTest将文件复制到测试运行文件夹

  •  103
  • Aaron Powell  · 技术社区  · 16 年前

    我有一个测试,需要读入一个XML文件,然后进行解析。如何每次都将此文件复制到测试运行文件夹中?

    6 回复  |  直到 16 年前
        1
  •  132
  •   Richard Ev    11 年前

    使用 DeploymentItem attribute

    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");
            }
        }
    }
    
        2
  •  28
  •   TamW    13 年前

    ...TestResults\...\out 文件夹,它不会复制您的额外文件(除非您将其作为部署选项)。

    如果您依赖于保留文件夹结构中的额外文件,这也很有用,因为部署项似乎都直接(平面)复制到临时运行文件夹(out)中。如果您使用TestSettings中的Deployment,Add folder(部署,添加文件夹)选项(上面的答案表明,如果将每个项添加为其自己的DeploymentItem,则可以保留该结构)。

    要在VisualStudio中创建TestSettings文件,请右键单击 并选择New Item,然后选择TestSettings模板。要在mstest.exe的命令提示符下使用TestSettings文件,请添加选项, /testsettings:C:\Src\mySolution\myProject\local.testsettings (或添加为TeamCity中具有适当路径的额外命令行选项)

        3
  •  8
  •   Eric Bole-Feysot    13 年前

    Preet答案用于为单个测试部署项目。如果要在解决方案级别执行此操作,请使用 .testrunconfig settings .

        4
  •  5
  •   FrankyHollywood    11 年前

    对我来说,最好的解决方案是使用testsettings,特别是当多个测试需要相同的数据文件时。

    首先创建testsettings文件,并添加所需的部署项(文件或文件夹名):

    <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>
    <...../>
    
    • 在visual studio中运行时,使用“测试\测试设置”菜单中的“选择测试设置文件”来选择新的测试设置

    • 在运行mstest时,使用/testsettings参数让mstest使用您的testsettings。

        5
  •  2
  •   Sielu    12 年前

    您可以在包含具有AssemblyInitialize属性的方法的类中定义DeploymentItem。然后,无论运行哪个测试,您都可以确保复制了文件。

    不幸的是,DeploymentItem属性仅在包含您正在运行的测试的类上执行。因此,如果有10个测试类使用同一组文件,则必须将该属性添加到所有测试类中。

        6
  •  2
  •   acarlon    11 年前

    在Visual Studio 2012中,vstest.console.exe(内置测试运行程序)以输出目录作为当前路径运行。这意味着您只需要在解决方案中包含具有“始终复制”或“更新时复制”属性的项,即可供测试使用。对于一般情况,不需要DeploymentItem属性。当从输出/测试目录内的命令行运行vstest.console.exe时,同样适用。

    在某些情况下,会使用单独的文件夹,其中之一是在使用DeploymentItem属性时。看见 here 了解更多信息。