【问题标题】:ReSharper SDK test for Context Action doesn't work上下文操作的 ReSharper SDK 测试不起作用
【发布时间】:2015-11-05 19:21:41
【问题描述】:

我尝试使用 ReSharper SDK 内置测试基础设施测试我的自定义 ReSharper 上下文操作。我创建了一个输入文件、一个输出文件 (.gold) 并运行测试。出现两个问题:

  1. 测试总是成功的(即使输入和.gold文件是 完全不同,或空等);
  2. 没有.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。

【问题讨论】:

    标签: c# .net resharper resharper-9.0 resharper-sdk


    【解决方案1】:

    我做到了!这些步骤可以解决问题:

    1. 更新到 ReSharper.SDK v10(我猜这不是强制性的);
    2. 将基础测试类从 ContextActionTestBase 更改为 CSharpContextActionExecuteTestBase
    3. ExtraPath属性值设置为等于RelativeTestDataPath值(该值是input和gold-file所在的文件夹名称)。
    4. 删除ProcessAction 覆盖。

    这个测试类工作正常:

    [TestFixture]
    public class FooContextActionTests  : CSharpContextActionExecuteTestBase<FooContextAction>
    {
        protected override string ExtraPath => "FooContextActionTests";
    
        protected override string RelativeTestDataPath => "FooContextActionTests";
    
        [Test]
        public void Test01()
        {
            DoTestFiles("Test01.cs");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多