簡體   English   中英

ReSharper SDK對上下文操作的測試不起作用

[英]ReSharper SDK test for Context Action doesn't work

我嘗試使用ReSharper SDK內置的測試基礎結構來測試自定義的ReSharper Context Action。 我已經創建了一個輸入文件,一個輸出文件( .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。

我做的! 這些步驟解決了問題:

  1. 更新到ReSharper.SDK v10(我猜這不是強制性的);
  2. 將基礎測試類從ContextActionTestBase更改為CSharpContextActionExecuteTestBase ;
  3. ExtraPath屬性值設置為等於RelativeTestDataPath值(此值是輸入和黃金文件所在的文件夾名稱)。
  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");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM