Answers:
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选项,部署项目似乎都直接复制(平放)到临时运行文件夹中(向外)。如果您将每个项目添加为自己的DeploymentItem,则以上答案建议您可以保留结构。
对我来说,它可以直接在Visual Studio中正常运行测试(即,我的结构中的多余文件已找到并由测试使用),因为我很早以前出于另一个原因(未选中启用部署)创建了TestSettings文件,但在TeamCity时却没有运行mstest来运行测试,因为我没有指定应使用TestSettings文件。
要在Visual Studio中创建TestSettings文件,请在解决方案上单击鼠标右键,然后选择“新建项目”,然后选择TestSettings模板。要在mstest.exe的命令提示符下使用TestSettings文件,请添加选项,/testsettings:C:\Src\mySolution\myProject\local.testsettings
(或在TeamCity中添加具有适当路径的附加命令行选项)
Preet答案用于部署单个测试的项目。如果要在解决方案级别执行此操作,请使用.testrunconfig设置。
对我来说最好的解决方案是使用测试设置,特别是如果多个测试需要相同的数据文件时。
首先创建一个测试设置文件,然后添加所需的部署项(文件或文件夹名称):
<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使用您的测试设置。