TestContext 定义的目录的目的是什么?
What is the purpose of directories defined by TestContext?
这些是 TestContext
class 和 their respective definitions.
中定义的(未弃用的)目录
DeploymentDirectory
- 获取为测试部署的文件的目录运行。此 属性 通常包含 TestRunDirectory.
的子目录
ResultsDirectory
- 获取包含测试的测试结果和测试结果目录的顶级目录运行。这通常是 TestRunDirectory.
的子目录
TestResultsDirectory
- 获取测试结果文件的目录。
TestRunDirectory
- 获取包含部署文件和结果文件的测试 运行 的顶级目录。
TestRunResultsDirectory
- 获取测试运行 结果文件的顶级目录。此 属性 通常包含 ResultsDirectory.
的子目录
我觉得他们很模棱两可。每个目录是否有一些可靠的示例用法?例如。如果我要测试文件 I/O 如果我想创建一个临时 lorem ipsum 文件,其中任何一个都可以吗?
为了回答您的问题,我从以下几个来源收集了信息:
- What’s in the TestResults directory? in How to: Deploy Files for Tests on MSDN
- TestContext folders explained 作者 Bhuvaneshwari K [MSFT]
(我相信第二个来源有一个错误,其中 TestRunResultsDirectory
和 TestResultsDirectory
的位置被交换了。)
当 Visual Studio 执行测试时,会创建几个文件夹。
基本文件夹
测试基础文件夹使用此模板命名:
TestResults\Deploy_<user name> <timestamp>
如果您在 .testsettings
文件中指定设置和清理脚本,则此文件夹包含这些脚本。 .testsettings
文件还允许您更改文件夹的名称。
输出文件夹
基本文件夹包含一个名为 Out
的文件夹。 Out
文件夹是实际的部署文件夹,当测试 运行 开始时程序集和其他部署文件将复制到该文件夹。
如果您需要引用任何已部署的文件,您应该使用此文件夹。
文件夹中
代码覆盖率结果和某些其他测试结果存储在基础文件夹中名为 In
的文件夹中。
如果您使用TestContext.AddResult()
方法将文件添加到测试结果中,则该文件应存储在该文件夹中。 (我自己还没有验证这个声明,因为测试结果是在使用 Microsoft 测试管理器和 TFS 构建期间存储的;而不是在 运行 在 Visual Studio 中测试时。)
在\<机器名>文件夹中
机器特定文件夹创建为 In
文件夹的子文件夹。如果您需要在测试期间创建临时文件 运行,您应该使用此文件夹。
这里有一个 table 解释了 TestContext
属性如何映射到上述文件夹:
Property | Value
---------------------------------------+---------------------------
TestRunDirectory | Base folder
DeploymentDirectory | Out folder
ResultsDirectory, TestResultsDirectory | In folder
TestRunResultsDirectory | Machine specific In folder
如果所有测试都成功,则默认删除文件夹。要更改此行为,您可以将 .runsettings
文件添加到您的解决方案中,其中包含以下内容:
<RunSettings>
<MSTest>
<DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
</MSTest>
</RunSettings>
要实际使用此 .runsettings
文件,您必须在 Visual Studio 2015 中使用以下菜单选择:Test > Test设置 > Select 测试设置文件。如果您使用的是 ReSharper 单元测试 运行ner,则在 Tools > Unit Testing > 中设置设置ReSharper 选项对话框中的 MsTest。
[...] if I were to test file I/O would any of those be OK if I wanted to create a temporary lorem ipsum file?
是的,您应该对临时文件使用 TestRunResultsDirectory
。实际上,我认为在 Visual Studio 中进行单元测试时,您应该能够使用这些文件夹中的任何一个。但是,在进行远程测试和收集诊断数据时,使用此文件夹可能很重要。
我一直在考虑 In
和 Out
这两个名字,但我觉得很困惑。但是,如果您假设测试控制器的视角,那么将测试部署到 Out
(测试控制器输出)是有意义的,并且当测试完成时,从 In
文件夹(测试控制器)收集结果输入)。当然,这纯粹是我的猜测。
这些是 TestContext
class 和 their respective definitions.
DeploymentDirectory
- 获取为测试部署的文件的目录运行。此 属性 通常包含 TestRunDirectory. 的子目录
ResultsDirectory
- 获取包含测试的测试结果和测试结果目录的顶级目录运行。这通常是 TestRunDirectory. 的子目录
TestResultsDirectory
- 获取测试结果文件的目录。
TestRunDirectory
- 获取包含部署文件和结果文件的测试 运行 的顶级目录。
TestRunResultsDirectory
- 获取测试运行 结果文件的顶级目录。此 属性 通常包含 ResultsDirectory. 的子目录
我觉得他们很模棱两可。每个目录是否有一些可靠的示例用法?例如。如果我要测试文件 I/O 如果我想创建一个临时 lorem ipsum 文件,其中任何一个都可以吗?
为了回答您的问题,我从以下几个来源收集了信息:
- What’s in the TestResults directory? in How to: Deploy Files for Tests on MSDN
- TestContext folders explained 作者 Bhuvaneshwari K [MSFT]
(我相信第二个来源有一个错误,其中 TestRunResultsDirectory
和 TestResultsDirectory
的位置被交换了。)
当 Visual Studio 执行测试时,会创建几个文件夹。
基本文件夹
测试基础文件夹使用此模板命名:
TestResults\Deploy_<user name> <timestamp>
如果您在 .testsettings
文件中指定设置和清理脚本,则此文件夹包含这些脚本。 .testsettings
文件还允许您更改文件夹的名称。
输出文件夹
基本文件夹包含一个名为 Out
的文件夹。 Out
文件夹是实际的部署文件夹,当测试 运行 开始时程序集和其他部署文件将复制到该文件夹。
如果您需要引用任何已部署的文件,您应该使用此文件夹。
文件夹中
代码覆盖率结果和某些其他测试结果存储在基础文件夹中名为 In
的文件夹中。
如果您使用TestContext.AddResult()
方法将文件添加到测试结果中,则该文件应存储在该文件夹中。 (我自己还没有验证这个声明,因为测试结果是在使用 Microsoft 测试管理器和 TFS 构建期间存储的;而不是在 运行 在 Visual Studio 中测试时。)
在\<机器名>文件夹中
机器特定文件夹创建为 In
文件夹的子文件夹。如果您需要在测试期间创建临时文件 运行,您应该使用此文件夹。
这里有一个 table 解释了 TestContext
属性如何映射到上述文件夹:
Property | Value ---------------------------------------+--------------------------- TestRunDirectory | Base folder DeploymentDirectory | Out folder ResultsDirectory, TestResultsDirectory | In folder TestRunResultsDirectory | Machine specific In folder
如果所有测试都成功,则默认删除文件夹。要更改此行为,您可以将 .runsettings
文件添加到您的解决方案中,其中包含以下内容:
<RunSettings>
<MSTest>
<DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
</MSTest>
</RunSettings>
要实际使用此 .runsettings
文件,您必须在 Visual Studio 2015 中使用以下菜单选择:Test > Test设置 > Select 测试设置文件。如果您使用的是 ReSharper 单元测试 运行ner,则在 Tools > Unit Testing > 中设置设置ReSharper 选项对话框中的 MsTest。
[...] if I were to test file I/O would any of those be OK if I wanted to create a temporary lorem ipsum file?
是的,您应该对临时文件使用 TestRunResultsDirectory
。实际上,我认为在 Visual Studio 中进行单元测试时,您应该能够使用这些文件夹中的任何一个。但是,在进行远程测试和收集诊断数据时,使用此文件夹可能很重要。
我一直在考虑 In
和 Out
这两个名字,但我觉得很困惑。但是,如果您假设测试控制器的视角,那么将测试部署到 Out
(测试控制器输出)是有意义的,并且当测试完成时,从 In
文件夹(测试控制器)收集结果输入)。当然,这纯粹是我的猜测。