【问题标题】:Visual Studio Unit Test Code Base is different from machine to machineVisual Studio 单元测试代码库因机器而异
【发布时间】:2015-05-04 16:53:10
【问题描述】:

在使用 VS 单元测试框架进行单元测试期间,我的机器上有一些有趣的行为。 机器是win-7,VS2012 Update 1,Resharper 7.1.1

当我运行单元测试时,它会在 TestResults 下创建 2 个文件夹:

  1. Deploy_UserName YYYY-MM-DD hh_mm_ss
  2. UserName_MachineName YYYY-MM-DD hh_mm_ss

UserName_MachineName... 下,有文件夹Out,这是我执行测试的地方:

SolutionDir\TesResults\UserName_MachineName YYYY-MM-DD hh_mm_ss\Out

另外 2 个人打开同一个项目(win-7、VS2012、Resharper 7.1.2/8.2.3)(尽管他们使用不同的解决方案)并运行它。他们机器上的代码从以下位置执行:

ProjectDir\bin\Debug

我喜欢它。我希望在我的机器上具有相同的行为。我检查了所有可能的设置,但我没有看到任何可以更改以修改此行为的内容。 有什么想法吗?

【问题讨论】:

  • 在我看来,您使用的是 VS 单元测试面板,而不是 ReSharper。因此,您需要收集更多信息,例如 Process Monitor 日志或直接联系 JetBrains 支持。
  • @LexLi 我使用 Resharper 窗口。此外,我在编辑器中按下“resharper circles”。这种方式或另一种方式,结果是一样的

标签: c# .net unit-testing visual-studio-2012 resharper


【解决方案1】:

默认情况下,Resharper 影子复制程序集以进行测试。

您可以关闭卷影复制,它将在 bin 文件夹中运行。 本说明可能会将您指向正确的菜单以将其关闭:

https://www.jetbrains.com/resharper/webhelp80/Reference__Options__Tools__Unit_Testing.html

希望能解决你的问题

【讨论】:

  • 首先,我完全错过了在“单元测试”下有一些选项。我追求子节点......现在,我取消选中“影子复制”并且我也已经/已经有了“从 - 项目输出文件夹运行测试”。然而,它仍然从SolutionDir\TesResults\UserName_MachineName YYYY-MM-DD hh_mm_ss\Out 运行。我将在“正常”运行的其他机器上检查此选项卡
  • 等等。我刚刚在另一台机器上尝试过,它与我的设置相同,包括正在检查“Shadow-copy”并且它正在从“bin\debug”运行。所以,不幸的是,你的回答目前没有帮助
  • 在另一台机器上,您使用的是哪个版本的 resharper?
  • 您应该从指定文件夹检查运行测试并浏览您的文件夹,而不是从项目输出文件夹。
  • 这不是一个好的选择,因为我有 100 个单元测试。现在我要把它们都指向同一个位置?
【解决方案2】:

让它工作:

  • 将 VS2012 更新为更新 4

现在我有从 Bin\Debug 执行的代码,但我无法使用 Resharper 启动单元测试 - 只有 VS 测试实用程序

  • 将 Resharper 升级到 v7.1.3

此时 Resharper 开始工作,但我在执行单元测试期间开始收到 An unhandled exception of type 'System.ExecutionEngineException' occurred in mscorlib.dll

  • 在 Resharper Options-Unit Testing-MSTest 中未选中 “使用旧版 Runner”。顺便说一句,Resharper v7.1.1 中缺少此选项

终于成功了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2010-09-18
    • 2019-08-12
    相关资源
    最近更新 更多