ReSharper插件测试中的任意检查

时间:2015-03-14 12:13:08

标签: resharper-plugins resharper-sdk

我从DevGuide测试中了解到,ReSharper插件的工作原理如下:

  1. 加载插件并将测试输入文件传递给它
  2. 插件在传递的文件上执行它的操作
  3. ReSharper的测试环境以特殊格式将插件操作结果写入.tmp文件,该格式取决于测试的功能类型(例如,如果我们测试完成,.tmp文件将包含生成的完成项列表)
  4. ReSharper的测试环境将.tmp文件与.gold文件进行比较,以确定测试是否失败或成功
  5. 但我需要以下方案。前两个步骤与上述步骤相同,然后:

    1. 我编写了获取插件操作结果的代码,并检查它们是我所期望的,这样我就可以在需要时使测试失败
    2. 我怎样才能做到这一点?

      我需要它,因为我有一个代码使用ReSharper生成的AST来构建一些图形,我想测试的是正确构建的图形。

1 个答案:

答案 0 :(得分:0)

是的,你可以这样做。您需要创建自己的测试基类,而不是使用提供的测试基类之一。

基类的层次结构,每个基类都添加了额外的功能。通常,您将从QuickFixAvailabilityTestBaseQuickFixTestBase中获取,这些内容会添加测试快速修复的功能。这些类将执行某些操作并将输出写入.tmp文件,然后将其与.gold文件进行比较。

这些类本身来自BaseTestWithSingleProject,它提供了设置内存解决方案的功能,以及填充了您在测试中指定的文件的项目,或BaseTestWithTextControl也为您提供了您正在测试的文件的文本控件。如果直接从这个类派生(或使用自己的自定义基类),则可以执行实际测试所需的操作,并在内存中断言,或将相应的文本写入.tmp文件与.gold进行比较。

您应该覆盖DoTest方法。这将为您提供已设置的IProject,您可以执行任何操作以测试扩展程序的功能。您可以使用project.Solution.GetComponent<>来获取任何shell或解决方案组件,并使用ExecuteWithGold方法执行某些操作,写入.tmp文件并将ReSharper与.gold进行比较档案给你。