1

正如我从 DevGuide 中了解到的,测试 ReSharper 插件的工作方式如下:

  1. 加载插件并将测试输入文件传递给它
  2. 插件对传递的文件执行其操作
  3. ReSharper 的测试环境将插件操作结果以特殊格式写入 .tmp 文件,该格式取决于测试的功能类型(例如,如果我们测试完成,.tmp 文件将包含生成的完成项列表)
  4. ReSharper 的测试环境将 .tmp 文件与 .gold 文件进行比较,以确定测试是失败还是成功

但我需要以下场景。前两步同上,则:

  1. 我编写代码来获取插件操作的结果并检查它们是否符合我的预期,以便在需要时使测试失败

我怎样才能做到这一点?

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

4

1 回答 1

0

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

基类有一个层次结构,每个都添加额外的功能。QuickFixAvailabilityTestBase通常,您将从or之类的东西派生QuickFixTestBase,它添加了用于测试快速修复的功能。这些类将执行某些操作并将输出写入.tmp文件,然后将其与.gold文件进行比较。

这些类本身派生自类似的东西BaseTestWithSingleProject,它提供了设置内存中解决方案和项目的功能,这些解决方案和项目填充了您在测试中指定的文件,或者BaseTestWithTextControl还为您提供了正在测试的文件的文本控件。如果您直接从此类(或使用您自己的自定义基类)派生,您可以执行实际测试所需的操作,并在内存中声明某些内容,或将适当的文本写入.tmp文件以与.gold.

您应该覆盖该DoTest方法。这会给你一个IProject已经设置好的,你可以做任何你需要做的事情来测试你的扩展的功能。您可以使用project.Solution.GetComponent<>获取任何 shell 或解决方案组件,并使用该ExecuteWithGold方法执行某些操作,写入.tmp文件并让 ReSharper.gold为您与文件进行比较。

于 2015-05-05T15:01:46.503 回答