为了回答您的问题,我从几个来源收集了信息:
(我认为第二个来源有一个错误,将TestRunResultsDirectory 和TestResultsDirectory 的位置交换了。)
当 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 中进行单元测试时,您应该能够使用这些文件夹中的任何一个。但是,在进行远程测试和收集诊断数据时,使用此文件夹可能很重要。
我一直在思考In 和Out 的名称,这让我感到困惑。但是,如果您假设测试控制器的角度,那么将测试部署到 Out(测试控制器输出)是有意义的,并且当测试完成时,将从 In 文件夹(测试控制器输入)收集结果。当然,这纯粹是我的猜测。