2015-03-14 7 views
1

Как я узнал из DevGuide тестирования ReSharper плагинов работает следующим образом:Произвольные проверки в тестировании плагин ReSharper

  1. плагин загружен и тест входного файла передается к нему
  2. Плагин выполняет это действия по пройденному файл
  3. Рабочая среда ReSharper записывает результаты действий плагина в файл .tmp в специальном формате, который зависит от типа тестируемой функции (например, если мы тестируем завершение, файл .tmp будет содержать список сгенерированных объектов завершения)
  4. ReSharper's контрольная работа среда сравнивает файл .tmp с .gold файлом, чтобы решить, не прошел ли тест или не удалось

Но мне нужен следующий сценарий. Первые два шага аналогичны приведенным выше:

  1. Я пишу код, который получает результаты действий плагина и проверяет, что они ожидаются, поэтому я могу сделать при необходимости испытания

Как я могу это достичь?

Мне это нужно, потому что у меня есть код, который использует AST, созданный ReSharper, для построения некоторых графиков, и я хочу проверить, правильно ли построены графики.

ответ

0

Да, вы можете это сделать. Вам нужно создать собственный тестовый базовый класс, вместо того, чтобы использовать один из предоставленных.

Существует иерархия базовых классов, каждая из которых добавляет дополнительную функциональность. Обычно вы получаете что-то вроде QuickFixAvailabilityTestBase или QuickFixTestBase, которые добавляют функциональность для тестирования быстрых исправлений. Это классы, которые будут что-то делать и записывать вывод в файл .tmp, который затем сравнивается с файлом .gold.

Эти классы сами являются производными от чего-то вроде BaseTestWithSingleProject, который обеспечивает функциональные возможности для установки в оперативной памяти решения и проекта, который населен с файлами вы указываете в тесте или BaseTestWithTextControl который также дает вам контроль текста для файла, который вы» повторное тестирование. Если вы выйдете из этого класса напрямую (или со своим собственным базовым классом), вы можете выполнить действие, необходимое для фактического теста, или либо подтвердить что-то в памяти, либо записать соответствующий текст в файл .tmp для сравнения с .gold ,

Вы должны переопределить метод DoTest. Это даст вам IProject, который уже настроен, и вы можете сделать все, что вам нужно, чтобы проверить функциональность вашего внутреннего абонента. Вы можете использовать project.Solution.GetComponent<>, чтобы получить любой компонент оболочки или решения, и использовать метод ExecuteWithGold для выполнения чего-либо, записать в файл .tmp и сравнить ReSharper с файлом .gold.

 Смежные вопросы

  • Нет связанных вопросов^_^