2015-11-05 42 views
2

我嘗試使用ReSharper SDK內置測試基礎架構測試自定義ReSharper上下文操作。我創建了一個輸入文件,一個輸出文件(.gold)並運行測試。會出現兩個問題:上下文操作的ReSharper SDK測試不起作用

  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。

回答

0

我做到了!這些步驟可以解決問題:

  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"); 
    } 
}