Visual Studio测试项目 - 不在部署时复制文件夹

Dee*_*low 14 unit-testing mstest visual-studio-2008 visual-studio

这是问题:
1.在Visual Studio解决方案中创建一个TestProject.
2.打开.testrunco​​nfig文件,在"部署"菜单项下,选中"启用部署"复选框.
3.现在单击"添加目录..."按钮并添加一个文件夹,其中包含一些文件.
4.运行测试项目(使用虚拟测试).

好的,现在去检查TestResults文件夹:您将看到所有文件都被直接复制(到顶层) - 文件夹本身没有被复制(文件在其下面).这会在测试期间弄乱我的路径.任何人都可以告诉如何复制文件夹而不仅仅是下面的文件?

谢谢.

Ste*_*ger 17

[DeploymentItem]在使用它的测试类上使用该属性.您可以指定目录:

[TestClass]
[DeploymentItem("blahblah\\myDirectory", "myDirectory")]
public class MyTest
{

}
Run Code Online (Sandbox Code Playgroud)

注意:

  • 开始测试时,DeploymentItem非常慢.它似乎每秒复制2个文件.
  • 您可以在测试基类上指定该属性.但是,如果您有多个测试项目,它并不总是有效.
  • 您可以在具有标记方法的TestClass上指定它[AssemblyInitialize].那你只需要提供一次.不确定,你必须尝试.
  • 源目录相对于解决方案位置.这几乎没有记录.

  • 嗯.这需要在测试夹具类中而不是.testrunco​​nfig文件中进行硬编码.我决定取消选中"启用部署"并在bin\Debug文件夹中执行所有操作,我将所有数据文件设置为"始终复制".这份工作.谢谢你的信息! (2认同)
  • 它可以直接关闭"部署".但是你应该考虑从旧版本中bin\debug中存在文件的风险.您的测试只能在您的计算机上运行/失败.所以在不时地运行测试之前清理bin\debug. (2认同)

小智 11

在记事本中打开.testsettings文件.现在,您应该看到要复制的每个文件夹

<DeploymentItem filename="FolderName\" />
Run Code Online (Sandbox Code Playgroud)

将此更改为

<DeploymentItem filename="FolderName\" outputDirectory="FolderName\" /> 
Run Code Online (Sandbox Code Playgroud)