上下文操作的 ReSharper SDK 测试不起作用
Posted
技术标签:
【中文标题】上下文操作的 ReSharper SDK 测试不起作用【英文标题】:ReSharper SDK test for Context Action doesn't work 【发布时间】:2015-11-05 19:21:41 【问题描述】:我尝试使用 ReSharper SDK 内置测试基础设施测试我的自定义 ReSharper 上下文操作。我创建了一个输入文件、一个输出文件 (.gold
) 并运行测试。出现两个问题:
-
测试总是成功的(即使输入和
.gold
文件是
完全不同,或空等);
没有.tmp
文件与输入和.gold
文件一起出现。
但是,如果我重命名输入文件,则测试运行会失败并出现“文件不存在”异常。
我的测试项目的结构与docs 中描述的相同。
TestEnvironment.cs:
[assembly: RequiresSTA]
[ZoneDefinition]
public class TestEnvironmentZone : ITestsZone, IRequire<PsiFeatureTestZone>
[SetUpFixture]
public class ReSharperTestEnvironmentAssembly : ExtensionTestEnvironmentAssembly<TestEnvironmentZone>
测试类:
[TestFixture]
public class FooContextActionTests : ContextActionTestBase<FooContextAction>
protected override void ProcessAction(Func<FooContextAction> action, ITextControl control, ISolution solution)
protected override string ExtraPath get;
protected override string RelativeTestDataPath => @"FooContextActionTests";
[Test]
public void Test01()
DoTestFiles("Test01.cs");
我为简单的快速修复做了类似的测试。该测试按预期工作,并对输入或.gold
文件的任何更改作出反应。所以问题是如何正确测试上下文动作。
使用了 ReSharper SDK 9.2。
【问题讨论】:
【参考方案1】:我做到了!这些步骤可以解决问题:
-
更新到 ReSharper.SDK v10(我猜这不是强制性的);
将基础测试类从
ContextActionTestBase
更改为 CSharpContextActionExecuteTestBase
;
将ExtraPath
属性值设置为等于RelativeTestDataPath
值(该值是input和gold-file所在的文件夹名称)。
删除ProcessAction
覆盖。
这个测试类工作正常:
[TestFixture]
public class FooContextActionTests : CSharpContextActionExecuteTestBase<FooContextAction>
protected override string ExtraPath => "FooContextActionTests";
protected override string RelativeTestDataPath => "FooContextActionTests";
[Test]
public void Test01()
DoTestFiles("Test01.cs");
【讨论】:
以上是关于上下文操作的 ReSharper SDK 测试不起作用的主要内容,如果未能解决你的问题,请参考以下文章