由于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?
解决方法:
您是否尝试过在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"以获取它是有效的。
即单元测试设置中现在有一个新选项