ReSharper 单元测试不在 bin 目录中 运行
ReSharper Unit Test not run in bin directory
序言
我知道,这个问题似乎在这里有答案:
- Resharper runs UnitTest from different location
- Resharper Unit Test Runner Can't Find Content Files
我遇到了与 几乎相同的问题。
但是这些回答表明,问题应该随着 ReSharper 10.0.2
消失
问题
我包含了一个带有自定义设置的 custom.xml
文件,我需要从我的单元测试中读取它们。但是找不到我的文件。
我查看了进程运行的位置,并包含了这一行
var curdir = Directory.GetCurrentDirectory();
所以我发现 curdir
是 C:\Users\MYUSER\AppData\Local\JetBrains\Installations\ReSharperPlatformVs11_000
现在很明显找不到我的文件了。谷歌搜索后,它发现了上述问题。但是 none 这些解决方案对我有用。
这些是我的设置:
Visual Studio配置
微软 Visual Studio 旗舰版 2012
版本 11.0.61219.00 更新 5
微软 .NET 框架
版本 4.6.01038
安装版本:Ultimate
- 架构和建模工具 04940-004-0038003-02857
- 团队资源管理器 Visual Studio 2012 04940-004-0038003-02857
- Microsoft 团队资源管理器 Visual Studio 2012
- Visual Basic 2012 04940-004-0038003-02857
- 微软 Visual Basic 2012
- 可视化 C# 2012 04940-004-0038003-02857
- 微软可视化 C# 2012
- Visual C++ 2012 04940-004-0038003-02857
- 微软 Visual C++ 2012
- 可视化 F# 2012 04940-004-0038003-02857
- 微软可视化 F# 2012
- Windows Phone SDK 8.0 - DEU 04940-004-0038003-02857
- Windows Phone SDK 8.0 - DEU
- ASP.NET 和网络工具 2012.3.41009
- 生成单元测试 1.0
- Git 源代码管理提供程序 1.0.0.0
- JetBrains ReSharper Ultimate 10.0.2 内部版本 104.0.20151218.120627
- 用于 Windows Phone 6.2.923.0
的 Microsoft 广告 SDK
- 用于 Windows Phone 版本 6.2.923.0
的 Microsoft 广告 SDK
- 微软 XNA 游戏工作室 4.0
- 微软 XNA 游戏工作室 4.0
- NuGet-数据包管理器 2.8.60318.667
- PreEmptive Analytics Visualizer 1.0
- SQL 服务器数据工具 11.1.20627.00
- 微软SQL服务器数据工具
- Git 扩展
您没有列出任何已安装的 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
序言
我知道,这个问题似乎在这里有答案:
- Resharper runs UnitTest from different location
- Resharper Unit Test Runner Can't Find Content Files
我遇到了与
问题
我包含了一个带有自定义设置的 custom.xml
文件,我需要从我的单元测试中读取它们。但是找不到我的文件。
我查看了进程运行的位置,并包含了这一行
var curdir = Directory.GetCurrentDirectory();
所以我发现 curdir
是 C:\Users\MYUSER\AppData\Local\JetBrains\Installations\ReSharperPlatformVs11_000
现在很明显找不到我的文件了。谷歌搜索后,它发现了上述问题。但是 none 这些解决方案对我有用。
这些是我的设置:
Visual Studio配置
微软 Visual Studio 旗舰版 2012
版本 11.0.61219.00 更新 5
微软 .NET 框架
版本 4.6.01038
安装版本:Ultimate
- 架构和建模工具 04940-004-0038003-02857
- 团队资源管理器 Visual Studio 2012 04940-004-0038003-02857
- Microsoft 团队资源管理器 Visual Studio 2012
- Visual Basic 2012 04940-004-0038003-02857
- 微软 Visual Basic 2012
- 可视化 C# 2012 04940-004-0038003-02857
- 微软可视化 C# 2012
- Visual C++ 2012 04940-004-0038003-02857
- 微软 Visual C++ 2012
- 可视化 F# 2012 04940-004-0038003-02857
- 微软可视化 F# 2012
- Windows Phone SDK 8.0 - DEU 04940-004-0038003-02857
- Windows Phone SDK 8.0 - DEU
- ASP.NET 和网络工具 2012.3.41009
- 生成单元测试 1.0
- Git 源代码管理提供程序 1.0.0.0
- JetBrains ReSharper Ultimate 10.0.2 内部版本 104.0.20151218.120627
- 用于 Windows Phone 6.2.923.0 的 Microsoft 广告 SDK
- 用于 Windows Phone 版本 6.2.923.0 的 Microsoft 广告 SDK
- 微软 XNA 游戏工作室 4.0
- 微软 XNA 游戏工作室 4.0
- NuGet-数据包管理器 2.8.60318.667
- PreEmptive Analytics Visualizer 1.0
- SQL 服务器数据工具 11.1.20627.00
- 微软SQL服务器数据工具
- Git 扩展
您没有列出任何已安装的 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