【问题标题】:What is the purpose of directories defined by TestContext?TestContext 定义的目录的目的是什么?
【发布时间】:2016-04-11 12:05:00
【问题描述】:

这些是在TestContext 类和their respective definitions 中定义的(未弃用的)目录。

DeploymentDirectory

  • 获取为测试运行部署的文件的目录。此属性通常包含 TestRunDirectory 的子目录。

ResultsDirectory

  • 获取包含测试结果的顶级目录和测试运行的测试结果目录。这通常是 TestRunDirectory 的子目录。

TestResultsDirectory

  • 获取测试结果文件的目录。

TestRunDirectory

  • 获取包含部署文件和结果文件的测试运行的顶级目录。

TestRunResultsDirectory

  • 获取测试运行结果文件的顶级目录。此属性通常包含 ResultsDirectory 的子目录。

我觉得它们很模棱两可。每个目录都有一些可靠的示例用法吗?例如。如果我要测试文件 I/O,如果我想创建一个临时 lorem ipsum 文件,这些都可以吗?

【问题讨论】:

    标签: c# .net unit-testing testing testcontext


    【解决方案1】:

    为了回答您的问题,我从几个来源收集了信息:

    (我认为第二个来源有一个错误,将TestRunResultsDirectoryTestResultsDirectory 的位置交换了。)

    当 Visual Studio 执行测试时,会创建几个文件夹。

    基础文件夹

    使用此模板命名测试基础文件夹:

    TestResults\Deploy_

    如果您在 .testsettings 文件中指定设置和清理脚本,则此文件夹包含这些脚本。 .testsettings 文件还允许您更改文件夹的名称。

    输出文件夹

    基本文件夹包含一个名为Out 的文件夹。 Out 文件夹是实际的部署文件夹,当测试运行开始时,程序集和其他部署文件将复制到其中。

    如果您需要引用任何已部署的文件,您应该使用此文件夹。

    在文件夹中

    代码覆盖结果和某些其他测试结果存储在基础文件夹中名为 In 的文件夹中。

    如果您使用TestContext.AddResult() 方法将文件添加到测试结果中,则该文件应存储在此文件夹中。 (我自己没有验证这一说法,因为测试结果是在使用 Microsoft 测试管理器和 TFS 构建期间存储的;而不是在 Visual Studio 中运行测试时。)

    在\文件夹中

    计算机特定文件夹被创建为In 文件夹的子文件夹。如果您需要在测试运行期间创建临时文件,您应该使用此文件夹。

    下表解释了TestContext 属性如何映射到上述文件夹:

    物业 |价值 ----------------------------------------------------+--------- ----------------- 测试运行目录 |基本文件夹 部署目录 |出文件夹 结果目录,测试结果目录 |在文件夹中 测试运行结果目录 |机器特定的 In 文件夹

    如果所有测试都成功,则默认删除文件夹。要更改此行为,您可以将 .runsettings 文件添加到您的解决方案中,其中包含以下内容:

    <RunSettings>
        <MSTest>
            <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
        </MSTest>
     </RunSettings>
    

    要实际使用此.runsettings 文件,您必须在 Visual Studio 2015 中使用以下菜单选项:测试 > 测试设置 > 选择测试设置文件。如果您使用的是 ReSharper 单元测试运行程序,则设置在 ReSharper 选项对话框的 工具 > 单元测试 > MsTest 中设置。

    [...] 如果我要测试文件 I/O,如果我想创建一个临时 lorem ipsum 文件,这些都可以吗?

    是的,您应该将TestRunResultsDirectory 用于临时文件。实际上,我认为在 Visual Studio 中进行单元测试时,您应该能够使用这些文件夹中的任何一个。但是,在进行远程测试和收集诊断数据时,使用此文件夹可能很重要。


    我一直在思考InOut 的名称,这让我感到困惑。但是,如果您假设测试控制器的角度,那么将测试部署到 Out(测试控制器输出)是有意义的,并且当测试完成时,将从 In 文件夹(测试控制器输入)收集结果。当然,这纯粹是我的猜测。

    【讨论】:

      猜你喜欢
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-19
      • 2012-09-18
      • 1970-01-01
      • 2020-03-03
      • 2023-03-30
      • 2018-03-23
      相关资源
      最近更新 更多