gpt4 book ai didi

c# - 上下文操作的 ReSharper SDK 测试不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:45 24 4
gpt4 key购买 nike

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

  1. 测试总是成功的(即使输入和 .gold 文件是完全不同,或空等);
  2. 没有 .tmp 文件与输入和 .gold 文件一起出现。

但是,如果我重命名输入文件,则测试运行会失败并出现“文件不存在”异常。

我的测试项目的结构与 docs 中描述的相同.

测试环境.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 文件的任何更改使用react。所以问题是如何正确测试上下文操作。

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

关于c# - 上下文操作的 ReSharper SDK 测试不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33553021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com