TestContext 定义的目录的用途是什么?

mat*_*lat 4 .net c# testing unit-testing testcontext

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

DeploymentDirectory

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

ResultsDirectory

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

TestResultsDirectory

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

TestRunDirectory

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

TestRunResultsDirectory

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

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

Mar*_*age 6

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

\n\n\n\n

(我相信第二个来源有一个错误,其中 和 的位置TestRunResultsDirectory交换TestResultsDirectory了。)

\n\n

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

\n\n

基础文件夹

\n\n

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

\n\n
\nTestResults\\Deploy_<用户名> <时间戳>\n
\n\n

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

\n\n

输出文件夹

\n\n

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

\n\n

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

\n\n

在文件夹中

\n\n

代码覆盖率结果和某些其他测试结果存储在In位于基本文件夹中的指定文件夹中。

\n\n

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

\n\n

在 \\<计算机名称> 文件夹中

\n\n

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

\n\n

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

\n\n
\n属性 | 值\n----------------------------------------+----- --------------------\nTestRunDirectory | 基本文件夹\nDeploymentDirectory | Out 文件夹\nResultsDirectory、TestResultsDirectory | 在文件夹\nTestRunResultsDirectory | 中 计算机特定的文件夹中\n
\n\n

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

\n\n
<RunSettings>\n    <MSTest>\n        <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>\n    </MSTest>\n </RunSettings>\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
\n

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

\n
\n\n

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

\n\n
\n\n

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

\n