48

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

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

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

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

4

3 回答 3

55

解决方法:

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

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

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

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

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

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

于 2013-08-07T13:22:11.677 回答
9

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

于 2013-07-26T17:48:48.383 回答
6

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

不要忘记勾选新选项 ReSharper | 选项 | 工具 | 单元测试 | “为每个带有测试的程序集使用单独的 AppDomain”以使其正常工作。

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

于 2013-11-29T01:39:04.993 回答