Поделиться через


Тестирование исполнения с помощью горячей перезагрузки

Тестовые запуски в Visual Studio включают создание проекта для обновления двоичных файлов на диске перед использованием тестовой платформы для выполнения тестов. Время сборки в Visual Studio может отличаться в зависимости от типа изменений, внесенных в код. Для более крупных решений сборки могут быть самой дорогой частью тестового запуска.

В Visual Studio 2022 и более поздних версиях выполнение теста с горячей перезагрузкой можно включить, чтобы ускорить выполнение теста, пропуская сборки для поддерживаемых сценариев.

Что поддерживается?

  • Проекты C# и VB, предназначенные для .NET 6.0 и более поздних версий
  • Тестовые проекты, созданные для конфигурации DEBUG
  • Visual Studio 2022 и более поздних версий

Включение тестового выполнения с помощью горячей перезагрузки

Эту функцию можно включить в областипараметров>. Разверните раздел «Все параметры> и установите флажок «(Экспериментально) Включить запуск тестов с горячей перезагрузкой для проектов тестов на C# и VB, предназначенных для .NET 6 и более поздних версий».

Снимок экрана, показывающий, как выбрать параметр

Эту функцию можно включить в диалоговом окне"Параметры>". Разверните раздел Общие и установите флажок «(Экспериментальная функция) Включить горячую перезагрузку тестовых запусков для проектов тестов C# и VB, нацеленных на .NET 6 и более поздние версии».>

Снимок экрана, на котором показано, как выбрать параметр

Почему это считается экспериментальным?

Эта функция предоставляет новый подход к выполнению теста, который изменяет широко используемый путь для проверки кода. Взаимодействие с пользователем для этой функции может измениться по мере того, как мы продолжаем получать отзывы. По этим причинам функция в настоящее время помечена как экспериментальная.

Принцип работы

После включения параметра обозреватель тестов автоматически использует выполнение теста с горячей перезагрузкой, когда это возможно. Если горячая перезагрузка невозможна, происходит возврат к стандартному поведению сборки и выполнения тестов. В качестве пользователя, выполняющего тесты, вам не нужно вносить изменения в рабочий процесс (т. е. продолжать изменять код и выполнять тесты).

Под капотом мы используем ту же инфраструктуру «Изменить и продолжить», которая существует в недавно выпущенной функции горячей перезагрузки для редактирования кода C#/VB во время выполнения для отслеживания внесенных изменений. По этой причине горячая перезагрузка выполняется только в том случае, если нет "грубых изменений", в этом случае мы возвращаемся к созданию тестов перед их выполнением. Дополнительные сведения о поддерживаемых изменениях см. в документации по редактированию и продолжению

Сколько быстрее выполняется тестирование?

Существует множество переменных, которые вступают в игру при оценке времени, которое эта функция экономит вас. Рассмотрим пример.

  • Сколько времени занимает сборка проекта.
  • Какой вид редактирования был сделан.
  • Насколько велик файл, где была сделана правка.
  • Где было сделано изменение (если это был конечный проект или нет).

В итоге улучшения скорости напрямую связаны с временем сборки, которое имело бы место в этом конкретном тестовом запуске.

Примечания.

  • Первый тестовый запуск после включения параметра или открытия Visual Studio активирует сборку проекта.

  • Файлы в редакторе могут не сохраняться при выполнении тестов. Чтобы устранить эти и перед возвратом, убедитесь, что выполняется полная сборка (CTRL+SHIFT+B).

  • Двоичные файлы на диске не обновляются, когда выполняется горячая перезагрузка тестов.

  • Выполнение тестов с горячей перезагрузкой не работает с "Тест>Запуск всех тестов", "Запуск всех тестов в представлении" в Test Explorer, а также не работает с Запуск всех тестов из узла решения в обозревателе решений. Эта функция не работает с этими командами, потому что они в настоящее время гарантируют создание всего решения.

  • При выполнении тестов с неподдерживаемых целевых платформ (ниже .NET 6.0) происходит сборка проекта.

  • Если вы видите несоответствия между тем, что находится на диске и что показывает обозреватель тестов, попробуйте выполнить сборку решения или проекта с помощью сочетания клавиш CTRL + SHIFT + B , а затем выполнить тесты. Любая явная сборка заменяет результаты теста горячей перезагрузки обычными результатами теста полной сборки.

Известные проблемы

Выполнение теста с горячей перезагрузкой не выполняется в следующих сценариях:

  • Объем протестированного кода
  • Динамическое модульное тестирование
  • Составление профиля
  • Отладка

Трассировки стека могут быть нечитабельными из-за наличия нечитаемых токенов. Эта проблема отслеживается здесь и планируется для исправления в .NET 7.0.

  • Рекомендуемое решение в этом случае заключается в создании проекта и повторном запуске теста.

Ваши отзывы важны

Чтобы эта экспериментальная функция была завершена, мы требуем ваших отзывов. Если у вас есть предложение улучшить интерфейс или столкнуться с любыми проблемами, воспользуйтесь моментом, чтобы предоставить входные данные. Только с вашим отзывом мы можем убедиться, что критически важные проблемы устранены, и будущие решения будут определены в соответствии с вашими входными данными.

Чтобы отправить отзыв, используйте механизм обратной связи Visual Studio.