【问题标题】:Why My test Binaries are getting copied into TestResults\<somepath>\out folder?为什么我的测试二进制文件被复制到 TestResults\<somepath>\out 文件夹中?
【发布时间】:2013-02-11 13:39:43
【问题描述】:

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

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

谁能帮我解决这个问题?

【问题讨论】:

  • 您是否检查了项目构建的设置:Properties -&gt; Build -&gt; Output Path
  • 输出路径仅为 bin 文件夹。该文件是在 bin 文件夹中创建的,但是当从 Visual Studio 执行时,它会被复制到测试结果文件夹并从那里执行

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


【解决方案1】:

Visual Studio 2010 创建一个文件夹 TestResults 并将所有相关文件部署在具有以下架构的子目录中:用户名_计算机名日期时间

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

如果你有一个 .testsettings 文件,它取决于 Deployment 部分中的Enable Deployment 的设置。如果选中Enable Deployment,则会创建并填充TestResults文件夹。

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

更多信息见:

MSDN - Test Deployment Overview

【讨论】:

    【解决方案2】:

    参加聚会有点太晚了,但这是我刚刚从实验中学到的东西

    环境:net45、VS2017、Microsoft.VisualStudio.QualityTools.UnitTestFramework

    当我的TestMethodDeploymentItemAttribute 时,它从TestResults\....\Out 文件夹执行。当我删除 DeploymentItemAttribute 时,它会从 bin\debug 执行。

    【讨论】:

    • 非常感谢,这正是我的问题。我使用了很多方法:.runsettings、.testsettings...我似乎不再使用 TestResults 文件夹了。然后在您发表评论后,我发现我的一个测试类使用了提到的属性...
    • @KotMatroskin 很高兴为您提供帮助,Matroskin 先生。向佩奇金说“嗨”
    【解决方案3】:

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

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

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

    2. 修改当前的测试设置,并将依赖项作为部署项。

    【讨论】:

      【解决方案4】:

      将属性Copy Local 更改为False

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

      【讨论】:

        【解决方案5】:

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

        更多详情请见Test Deployment Overview

        【讨论】:

          猜你喜欢
          • 2013-06-08
          • 1970-01-01
          • 2017-02-22
          • 1970-01-01
          • 2020-09-25
          • 1970-01-01
          • 2014-04-10
          • 2010-10-13
          • 2016-08-18
          相关资源
          最近更新 更多