2

这些是在TestContextclass中定义的(未弃用的)目录及其各自的定义

DeploymentDirectory

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

ResultsDirectory

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

TestResultsDirectory

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

TestRunDirectory

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

TestRunResultsDirectory

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

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

4

1 回答 1

4

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

(我相信第二个来源有一个错误,其中和的位置被交换了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 中使用以下菜单选项:Test > Test Settings > Select Test Settings File。如果您使用的是 ReSharper 单元测试运行程序,则在 ReSharper 选项对话框的工具>单元测试> MsTest中设置设置。

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

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


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

于 2016-12-06T12:23:18.747 回答