【问题标题】:Running NUnit through Resharper 8 tests fail when crossing between projects due to AppDomain由于 AppDomain 在项目之间交叉时通过 Resharper 8 测试运行 NUnit 失败
【发布时间】:2013-07-26 11:51:50
【问题描述】:

我最近更新到 Resharper 8,当我尝试运行一套项目时。这些测试包含两套集成测试,它们都使用 IISExpress 运行网站、发出 Web 请求并检查响应。

单独运行它们是成功的,并且运行所有测试之前都会成功。但是,在更新之后,要运行的第二组测试将失败。

调查显示AppDomain.CurrentDomain.BaseDirectory 继续作为第一个运行的测试而不是更改。由于集成测试由两个项目组成,这会导致第二个项目失败,因为它找不到任何所需的配置文件。

我在 Resharper 8 中找不到任何选项来禁用这种不同的行为,这似乎是 /domain:Single nunit 标志的行为。没有降级到 Resharper 7,有人知道解决方案吗?这是 Resharper 8 的预期行为还是错误?

【问题讨论】:

    标签: c# nunit resharper integration-testing appdomain


    【解决方案1】:

    解决方法:

    您是否尝试过在 Visual Studio 中转到 ReSharper -> 选项 -> 工具 -> 单元测试

    将“最多并行运行 1 个程序集”设置更改为更高的数字。我为每个测试项目尝试了一个。我认为最大是核心数。

    我知道违反直觉,但它对我有用,我在失败的测试中使用 AppDomain.CurrentDomain.BaseDirectory

    原因 ReSharper 8 中的缓存优化错误。未正确设置工作目录。也许并行运行会为每个测试创建一个单独的进程,因此它们不会因彼此的设置而绊倒。

    修复 JetBrains 声称这将在 8.0.1 版中修复

    更新Resharper 8.1 中添加了一个新的单元测试选项来适应这种情况。在 ReSharper -> 选项 -> 工具 -> 单元测试 -> "对每个带有测试的程序集使用单独的 AppDomain。

    找到它。

    【讨论】:

    • +1 同样的问题。您建议的设置更改也适用于我。
    • 谢谢,这对我也有帮助。顺便说一句,此问题在 8.0.1 中未修复。不过可能会在以后的版本中修复。
    • 请参阅下面的@Paul Stuart 的回答,了解针对此错误的更具体设置。 (不过,这种解决方法确实有效)。
    • 感谢您的修复。幸运的是,您可以将此设置保存在“团队共享”设置中,这样您就不必让每个团队成员都进行此更改。
    【解决方案2】:

    我们看到了同样的问题。我认为这是一个错误。见:http://youtrack.jetbrains.com/issue/RSRP-380761

    【讨论】:

      【解决方案3】:

      此问题现已在 Resharper 8.0.2 中得到修复:http://youtrack.jetbrains.com/issue/RSRP-374143#comment=27-572929

      不要忘记勾选新选项 ReSharper |选项 |工具 |单元 测试 | “使用单独的 AppDomain 为每个程序集进行测试”以获得 它有效。

      即现在单元测试设置中有一个新选项。

      【讨论】:

      • 这解决了我在 Resharper 8.1 中的问题
      • 已复制并修复,但必须检查 ReSharper 设置中的新选项。
      猜你喜欢
      • 2011-11-14
      • 2019-03-04
      • 2020-08-06
      • 1970-01-01
      • 2019-02-01
      • 2014-01-03
      • 2011-09-16
      • 1970-01-01
      • 2015-01-25
      相关资源
      最近更新 更多