我尝试使用ReSharper SDK内置测试基础架构测试我的自定义ReSharper Context Action。我已经创建了一个输入文件,一个输出文件(.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
文件的任何更改做出反应。所以问题是如何正确测试Context Action。
使用ReSharper SDK 9.2。
答案 0 :(得分:0)
我做到了!这些步骤解决了这个问题:
ContextActionTestBase
更改为CSharpContextActionExecuteTestBase
; ExtraPath
属性值设置为等于RelativeTestDataPath
值(此值是输入和gold文件所在的文件夹名称)。ProcessAction
覆盖。此测试类正常工作:
[TestFixture]
public class FooContextActionTests : CSharpContextActionExecuteTestBase<FooContextAction>
{
protected override string ExtraPath => "FooContextActionTests";
protected override string RelativeTestDataPath => "FooContextActionTests";
[Test]
public void Test01()
{
DoTestFiles("Test01.cs");
}
}