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

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

我尝试使用 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/

相关文章:

.net - 在自定义数据注释中访问依赖属性的简单方法

unit-testing - 为什么在单击 Resharper "Run all tests"按钮与使用键盘快捷键命令时会出现不同的行为?

visual-studio - 适用于 IntelliJ IDEA 的 Visual Studio ReSharper 键盘映射

c# - 启动 Visual Studio 2008 时不会加载 ReSharper

c# - 从通用或本地 DateTime 添加/减去的最佳实践

c# - 如何在 RavenDB 中选择一个类型的所有文档

c# - 无法将路由命令添加到 WPF 中的复选框

javascript - 为什么添加额外的 header 会导致 AJAX 调用失败

c# 代码流映射/可视化实用程序?

c# - 有没有办法检查 Central Admin 以获取已安装/激活的 iFilters 列表?