ReSharper 单元测试不在 bin 目录中 运行

ReSharper Unit Test not run in bin directory

序言

我知道,这个问题似乎在这里有答案:

我遇到了与 几乎相同的问题。 但是这些回答表明,问题应该随着 ReSharper 10.0.2

消失

问题

我包含了一个带有自定义设置的 custom.xml 文件,我需要从我的单元测试中读取它们。但是找不到我的文件。

我查看了进程运行的位置,并包含了这一行

var curdir = Directory.GetCurrentDirectory();

所以我发现 curdirC:\Users\MYUSER\AppData\Local\JetBrains\Installations\ReSharperPlatformVs11_000

现在很明显找不到我的文件了。谷歌搜索后,它发现了上述问题。但是 none 这些解决方案对我有用。

这些是我的设置:

Visual Studio配置

微软 Visual Studio 旗舰版 2012

版本 11.0.61219.00 更新 5

微软 .NET 框架

版本 4.6.01038

安装版本:Ultimate

您没有列出任何已安装的 NUnit 版本,但是您标记了这个 'nunit' 所以我假设您正在使用它!此外,我假设 NUnit >= 3.0...否则忽略它。 :-)

NUnit 3.0 停止更改当前目录。无论如何,我们这样做是个坏主意,对于 3.0,这是一个 真的 坏主意,因为不同目录中的多个程序集可能同时 运行。

所以,假设它仍然是一个 NUnit 问题,而不是使用相对路径,使用 TestContext.CurrentContext.TestDirectory 作为文件的位置。

帮助我解决此类问题的东西 - 我刚刚关闭了 ReSharper 设置中的 NUnit 2.x 支持(ReSharper -> 选项... -> 工具 -> 单元测试 -> NUnit)。

试试这个:

Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);

我也关闭了 NUnit 2.x 支持,即使它显然与问题无关,它也解决了它(我有 ReSharper 2017.3.20180201.111630)

在我的情况下,当我更改为此设置时已修复

我们在测试中使用了 TestCaseSource。 所以我在 Rider 版本 2021.1.3 中的修复是将 Build-->Unit Testing-->NUnit 更改为 Test Runner