MSTest复制文件来testing运行文件夹

我有一个testing,需要读取一个XML文件,然后parsing。 我怎样才能把这个文件每次复制到testing运行文件夹?

XML文件被设置为“Copy if newer”和“none”的编译模式(因为它不是真正的可编译的东西)

使用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"); } } } 

看来,如果您为解决scheme提供TestSettings文件,那么您可以取消选中“启用部署”选项,并停止mstest从试图运行...TestResults\...\out文件夹,它不会复制您的额外文件(除非你让他们成为一个部署选项)。

如果您依赖于保存文件夹结构中的额外文件,这也非常有用,因为如果您使用TestSettings中的“部署”,“添加文件夹”选项,则似乎将部署项目直接复制到(临时)上面的答案build议你可以保持结构,如果你添加每个项目作为自己的DeploymentItem)。

对我来说,它直接在Visual Studio中正常运行testing(即我的额外的文件在其结构中被发现和使用的testing),因为我已经创build了TestSettings文件很久以前(其中有Enable部署未选中),但不是当TeamCity运行mstest来运行testing,因为我没有指定应该使用TestSettings文件。

要在Visual Studio中创buildTestSettings文件,请右键单击Solution并selectNew Item,然后selectTestSettings模板。 要在mstest.exe的命令提示符处使用TestSettings文件,请添加选项/testsettings:C:\Src\mySolution\myProject\local.testsettings (或者在TeamCity中添加一个额外的命令行选项,并添加适当的path)

Preet答案用于为单个testing部署项目。 如果您想在解决scheme级别执行此操作,请使用.testrunco​​nfig设置 。

最好的解决scheme是使用testing设置,特别是如果多个testing需要相同的数据文件。

首先创build一个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中运行,使用“testing\testing设置”菜单中的“selecttesting设置文件”来select新的testing设置

  • 运行mstest,使用/ testsettings参数让mstest使用你的testsettings。

您可以在包含AssemblyInitialize属性的方法的类中定义DeploymentItem。 那么无论您运行哪种testing,都要确保文件被复制。

不幸的是,DeploymentItem属性仅在包含您正在运行的testing的类上执行。 所以如果你有10个使用同一组文件的testing类,你必须添加这个属性给它们。

还发现* .testsettings文件中的更改不会在Visual Studio中自动刷新。 因此,在将testing设置中的文件/文件夹添加到部署之后,必须重新打开解决scheme文件,然后运行testing。

在Visual Studio 2012中,vstest.console.exe(内置testing运行器)以输出目录作为当前path运行。 这意味着您只需要将解决scheme中的项目与“复制总是”或“如果更新”复制到一起,供您的testing使用。 一般情况下不需要DeploymentItem属性。 从output / test目录中的命令行运行vstest.console.exe时也是如此。

在某些情况下,使用单独的文件夹,其中之一是使用DeploymentItem属性时。 在这里看到更多的信息。