我有一个测试,需要读入XML文件然后进行解析.如何将此文件每次复制到测试运行文件夹中?
XML文件设置为"如果更新则复制"和编译模式为"无"(因为它不是真正可编译的东西)
使用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"); } } }
似乎如果您为解决方案提供TestSettings文件,那么您可以取消选中"启用部署"选项并阻止mstest尝试...TestResults\...\out
从不复制您的额外文件的文件夹运行(除非您将它们作为部署选项) .
如果依赖于保留文件夹结构中的额外文件,这也很有用,因为如果使用TestSettings中的Deployment,Add Folder选项,则部署项似乎都直接(平面)复制到临时运行文件夹(out)中(上面的答案表明,如果将每个项目添加为自己的DeploymentItem,则可以保留结构.
对我来说,它直接在Visual Studio中运行良好的测试(即我的结构中的额外文件被测试找到并使用),因为我很久以前就已经创建了一个TestSettings文件(其中包含启用部署未选中),但是在TeamCity时没有运行mstest来运行测试,因为我没有指定应该使用TestSettings文件.
要在Visual Studio中创建TestSettings文件,请右键单击Solution并选择New Item,然后选择TestSettings模板.要在mstest.exe的命令提示符下使用TestSettings文件,请添加选项,/testsettings:C:\Src\mySolution\myProject\local.testsettings
(或在TeamCity中添加为具有适当路径的额外命令行选项)
Preet答案用于为单个测试部署项目.如果要在解决方案级别执行此操作,请使用.testrunconfig设置.