为什么我的测试二进制文件被复制到TestResults \ <somepath> \ out文件夹?</somepath>

时间:2013-02-11 13:39:43

标签: c# visual-studio-2010 unit-testing deployment msbuild

我在Visual Studio中遇到这种不寻常的行为,我的测试二进制文件(mytestsolution.dll)和参考中添加的依赖二进制文件突然被复制到我的Bin文件夹中的TestResults \\ Out文件夹中从那里开始执行?

这导致我的测试失败,因为我的GetExecutionAssembly()给出了Out文件夹的路径而不是Bin文件夹,其中存在一些依赖的二进制文件?

有人可以帮我解决这个问题吗?

5 个答案:

答案 0 :(得分:2)

Visual Studio 2010创建文件夹 TestResults ,并使用以下架构部署子目录中的所有相关文件: username_computername date time

如果您没有针对您的解决方案的.testsettings文件,这是正常行为。 .testsettings文件位于 Solution Items 文件夹中。

如果您有.testsettings文件,则取决于部署部分中启用部署的设置。如果选中启用部署,将创建​​并填充TestResults文件夹。

enter image description here

在某些情况下,尽管已启用“启用部署”,但可能会创建TestResults文件夹。但在这种情况下,该文件夹仅用于某些临时文件,而不是用于测试的执行文件。

有关更多信息,请参阅:

MSDN - Test Deployment Overview

答案 1 :(得分:2)

参加聚会有点晚了,不过这里是我从实验中学到的东西

Env:net45,VS2017,Microsoft.VisualStudio.QualityTools.UnitTestFramework

当我的TestMethod具有DeploymentItemAttribute时,它将从TestResults\....\Out文件夹执行。当我删除DeploymentItemAttribute时,它将从bin\debug执行。

答案 2 :(得分:1)

这是MSTest的默认行为。解决方案编译完成后,testrunner会复制对TestResults \ _TestRun_ \ Out文件夹的直接引用。更改编译设置(CopyLocal)不会影响测试运行。

如果您有所需的依赖项但不在TestRun输出文件夹中,则有几个选项:

  1. 在测试程序集中添加对这些程序集的引用。由于测试运行器使用反射来确定依赖关系,因此您需要引用该程序集中的类。

  2. 修改当前测试设置并将依赖项包含为部署项。

答案 3 :(得分:0)

将属性Copy Local更改为False

  1. 右键点击mytestsolution.dll,然后点击Properties
  2. 从那里将Copy Local更改为false
  3. 构建解决方案并立即检查。

答案 4 :(得分:0)

您可以通过在测试运行配置中禁用部署来解决此问题。例如,在VS 2008中:测试&gt;编辑测试运行配置&gt;本地试运行&gt;部署&gt;启用deployment = off。

有关详细信息,请参阅Test Deployment Overview