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

时间:2013-04-04 08:22:23

标签: c# unit-testing tfs mstest testrunconfig

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

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

我已经更新了ci.testrunco​​nfig,以便在测试运行时部署TestData文件夹:

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

但它没有部署文件夹。

如何解决?

我可以通过将“复制到输出目录”设置为“始终复制”来为特定文件部署文件,但是我想避免这种方法,因为我无法控制文件/文件夹的位置将部署。

2 个答案:

答案 0 :(得分:0)

您需要使用DeploymentItem标记。你可以在课堂上或特定的单元测试中完成。在Test项目中添加需要部署的目录和文件(例如MyFiles)。

在您的测试类中调用DeploymentItem并为其指定目录名称。

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

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

答案 1 :(得分:0)

已编辑我错过了您使用VS2005-VS2008,因为您在VS2010及更高版本.testrunconfig中使用.testsettings

无论如何,我刚刚遇到了类似的问题。这就是我发现的。您可以通过以下方式之一将文件夹部署到TestResults目录:

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

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

  3. 在使用testsettings进行所有实验后,您还需要手动刷新TestView窗口