由于AppDomain的原因,在项目之间进行交叉时,通过Resharper 8运行NUnit测试失败

本文关键字:Resharper 通过 测试 NUnit 运行 失败 AppDomain 之间 项目 由于 | 更新日期: 2023-09-27 18:24:58

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

在隔离状态下运行它们是成功的,并且以前运行所有测试都会成功。但是,在upate之后,要运行的第二组测试将失败。

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

我在Resharper 8中找不到任何选项来禁用这种不同的行为,这似乎是/domain:Single nunit标志的行为。除了降级到Resharper 7之外,有人知道解决这个问题的办法吗?这是Resharper 8的预期行为还是bug?

由于AppDomain的原因,在项目之间进行交叉时,通过Resharper 8运行NUnit测试失败

解决方法:

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

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

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

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

修复JetBrains声称这将在版本8.0.1 中得到修复

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

我们看到了同样的问题。我认为这是个bug。请参阅:http://youtrack.jetbrains.com/issue/RSRP-380761

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

不要忘记勾选新选项ReSharper |选项|工具|单位测试|"对每个带有测试的程序集使用单独的AppDomain"以获取它是有效的。

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