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

14

问题如下:
1. 在您的Visual Studio解决方案中创建一个TestProject。
2. 打开.testrunconfig文件,在“部署”菜单项下,选择“启用部署”复选框。
3. 现在点击“添加目录...”按钮并添加一个包含一些文件的文件夹。
4. 运行测试项目(使用虚拟测试)。

现在,请前往TestResults文件夹查看:您会发现所有文件直接被复制到了顶层,而文件夹本身没有被复制(文件夹下的文件也没有)。这会在测试期间导致我的路径混乱。请问有人可以告诉我如何复制整个文件夹而不仅仅是其中的文件?

谢谢。


我按照你说的做了,取消了测试设置中的“启用部署”,这样就不会创建新目录,而是使用现有的bin\Debug目录。好多了,也不那么容易出错了! - goku_da_master
4个回答

17

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

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

}

注意:

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

2
嗯。这需要在测试夹具类中进行硬编码,而不是.testrunconfig文件中。我决定将“启用部署”选项取消勾选,并在bin \ Debug文件夹中完成所有任务,其中我将所有数据文件都设置为“始终复制”。 完成了工作。感谢您提供的信息! - DeeStackOverflow
2
关闭“部署”很简单。但是您应该考虑旧版本构建中bin\debug文件的风险。您的测试可能只在您的计算机上运行/失败。因此,请定期清理bin\debug以便在运行测试之前。 - Stefan Steinegger
同样的问题也可能会发生在运行代码和测试时,那就是脏文件的问题! - Matt Connolly

11

使用记事本打开.testsettings文件。现在,您应该看到为每个要复制的文件夹设置了

<DeploymentItem filename="FolderName\" />

将此更改为

<DeploymentItem filename="FolderName\" outputDirectory="FolderName\" /> 

1
这正是我所需要的,谢谢。我需要重新启动Visual Studio才能生效。 - Ciaran
以上答案的变化。我有一个filename="FolderName\SubfolderName",需要转换为filename="SubfolderName" outputDirectory="SubfolderName"才能正常工作。 - Carl Onager
谢谢,这很有帮助。同样需要在VS2013中使用相同的hack。我想知道为什么需要使用文本编辑器来指定outputDirectory!微软应该修复编辑testsettings对话框。不喜欢被接受的答案,这个更干净。 - lame_coder

0

我今天也遇到了这个问题。我通过在项目中添加一个名为“deployment_files”的文件夹来解决它,该文件夹包含所需的文件夹。然后,我将所需的文件夹放入“deployment_files”文件夹中。接着,我打开了“Solution Explorer”中“Solution Items”文件夹下的LocalTestRun.testrunconfig文件。在testrunconfig属性窗口中,转到“Deployment”面板。将“deployment_files”目录添加到部署中,完成。该文件夹及其内部的内容将被复制到测试结果输出文件夹中。


0
你还有另一个选项,就是在原始文件夹下创建另一个文件夹,然后该文件夹将部署到输出目录。例如,你可以有以下结构:
TestFolder/
TestFolder/TestDeployment/
然后在testrunconfig中仍然选择TestFolder文件夹,TestDeployment文件夹将被部署到输出目录中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接