运行 ReSharper 插件测试使用 R# 测试运行器

Run ReSharper plugin tests using R# test runner

我正在构建一个 R# 插件并决定用测试覆盖它。但是,我注意到,如果插件目标版本与 R# 版本相同,则插件测试不能 运行 使用 R# 运行ner。

例如,如果您尝试使用 JetBrains.ReSharper.SDK.Tests 版本 2016.2.20160818.171542 进行 运行 测试,您将收到以下错误:

ERROR System.TypeLoadException: Method 'RunTests' in type 'JetBrains.ReSharper.UnitTestRunner.nUnit26.BuiltInNUnitRunner' from assembly 'JetBrains.ReSharper.UnitTestRunner.nUnit26, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' does not have an implementation.

在以前的版本中错误是不同的。

发生这种情况的原因可能是 R# 运行ner 和 SDK 程序集混合使用。

有什么方法可以配置 project/R# 以便能够 运行 使用 R# 运行ner 进行插件单元测试?可能,R# 开发团队使用他们自己的 运行ner.

谢谢!

R# 和 SDK 必须是不同的主要版本,或者是二进制兼容版本。不幸的是,在 EAP 中,测试运行器中的内部 API 发生了变化,因此来自不同 EAP 的 R# 和 SDK 不兼容。

不幸的是,这是 201.6.2 中 ReSharper 运行程序中的错误。与在同一进程中拥有相同程序集的多个副本有关 - 来自安装的程序集和来自 bin 文件夹的程序集。一路上有些事情搞砸了。

您可以订阅、投票和跟踪此问题:RSRP-460399

解决方法是将旧版本的 ReSharper 安装到 Visual Studio "experimental instance" 又名 "custom hive" 中,并使用此实例开发和测试插件。普通实例可以用于其他日常开发。

您可以download an older version of ReSharper here (e.g. 2016.1.2),在安装程序中,单击“选项”并输入自定义实例的名称,例如"Plugins"。然后创建一个新的 Visual Studio 快捷方式,并将命令行设置为 "devenv.exe /rootSuffix Plugins"(或任何您称为自定义配置单元的名称)。