当使用MSTest时,如何将测试数据文件夹部署到TestResults目录

本文关键字:文件夹 测试数据 部署 目录 TestResults MSTest | 更新日期: 2023-09-27 18:07:24

当使用MSTest时,如何将测试数据文件夹部署到TestResults目录?

在我的UnitTests项目中,我有一个TestData文件夹,其中包含一些xml文件作为测试数据。

我已经更新了ci。testunconfig,以便在测试运行时部署TestData文件夹:

<Deployment>
    <DeploymentItem filename="TestData" outputDirectory="CustomFolder/TestData" />    
  </Deployment>

但是它不部署文件夹。

如何修复?

我可以通过将"Copy to Output Directory"设置为"Copy Always"来部署文件,但我想避免这种方法,因为我无法控制文件/文件夹的部署位置。

当使用MSTest时,如何将测试数据文件夹部署到TestResults目录

您需要使用deploymenttem标记。您可以在类或特定的单元测试中这样做。在您的Test项目中添加您需要部署的目录和文件(例如MyFiles)。

在您的测试类类DeploymentItem中,并给它您的目录名。

[TestClass]
[DeploymentItem("MyFiles")]
public class MyClassTest
{
    [TestMethod]
    public SomeMethodTest()
    {
        // Your unit test.
    }
    [TestMethod]
    [DeploymentItem("MyFiles")]
    public AnotherMethodTest()
    {
        // Your unit test.
    }
}

EDITED我错过了您使用VS2005-VS2008的工作,因为您使用的是.testrunconfig,而在VS2010和以后的版本中是.testsettings

不管怎样,我刚刚遇到了非常相似的问题。这就是我的发现。您可以通过以下方式之一将文件夹部署到TestResults目录:

  1. .testrunconfig.testsettings中设置启用部署复选框。选择需要部署的文件夹。问题是文件夹不会被部署,但文件夹内容将被部署到TestResults目录(如果文件夹为空,则不会部署任何内容)。就在TestResults目录的根目录中。如果您需要部署文件夹和文件夹内容,那么有选项2

  2. 同样,在.testrunconfig.testsettings中设置启用部署复选框。使用[DeploymentItem(pathOrigin, pathDest)]属性。PathOrigin可以是绝对路径或相对路径。相对路径是相对于.testrunconfig.testsetting文件中的RelativePathRoot设置的。默认情况下,RelativePathRoot是您的解决方案文件夹,因此使用Projectname/DirectoryName将目录部署到TestResults。如果MSTest找不到目录(或文件),它会尝试在TestProject的bin文件夹中找到它。

同样,在测试设置的所有实验之后,您需要手动刷新TestView窗口