【问题标题】:When working with MSTest, how to deploy a test data folder to the TestResults directory?使用 MSTest 时,如何将测试数据文件夹部署到 TestResults 目录?
【发布时间】:2013-04-04 08:22:23
【问题描述】:

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

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

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

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

但它不会部署文件夹。

如何解决?

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

【问题讨论】:

    标签: c# unit-testing tfs mstest testrunconfig


    【解决方案1】:

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

    在您的测试类中添加 DeploymentItem 并为其命名。

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

    【讨论】:

    • 我正在使用它,它工作正常。您的解决方案中有测试设置吗?
    【解决方案2】:

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

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

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

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

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

    【讨论】:

    • 有没有办法在 VS 2017 中创建“testsettings”文件?还是格式/结构的链接?
    猜你喜欢
    • 2013-04-24
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    相关资源
    最近更新 更多