为了回答您的问题,我从几个来源收集了信息:
(我相信第二个来源有一个错误,其中和的位置被交换了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 中使用以下菜单选项:Test > Test Settings > Select Test Settings File。如果您使用的是 ReSharper 单元测试运行程序,则在 ReSharper 选项对话框的工具>单元测试> MsTest中设置设置。
[...] 如果我要测试文件 I/O,如果我想创建一个临时的lorem ipsum文件,其中的任何一个都可以吗?
是的,您应该TestRunResultsDirectory
用于临时文件。实际上,我认为在 Visual Studio 中进行单元测试时,您应该能够使用这些文件夹中的任何一个。但是,在进行远程测试和收集诊断数据时,使用此文件夹可能很重要。
我一直在考虑我觉得令人困惑的In
和名称。Out
但是,如果您假设测试控制器的角度,则将测试部署到(测试控制器输出)是有意义的,Out
并且当测试完成时,将从文件夹中收集结果In
(测试控制器输入)。当然,这纯粹是我的猜测。