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


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

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

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

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

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

Включите эту функцию, выбрав Тест>Параметры>Включить тестовые запуски с горячей перезагрузкой для тестовых проектов C# и VB для .NET 6 и более поздних версий (экспериментальная функция). Screenshot of the Enable Hot Reloaded Test Runs button on the Visual Studio Test Options page. When this is selected, tests execution will use hot reload for supported scenarios

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

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

Как это работает

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

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

Насколько быстрее будет выполняться тест?

При оценке времени, которое сэкономит для вас эта функция, нужно учитывать много переменных. Например:

  • Время, которое занимает сборка проекта.
  • Тип изменения.
  • Размер файла, в который было внесено изменение.
  • Место внесения изменения (листовой проект или нет).

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

Примечания.

  • Первый тестовый запуск после включения параметра или открытия Visual Studio приведет к сборке проекта.
  • Файлы в редакторе могут не сохраняться при выполнении тестов. Чтобы устранить эти проблемы, перед записью файлов после изменения выполните полную сборку с помощью клавиш CTRL+SHIFT+B.
  • При выполнении теста с горячей перезагрузкой двоичные файлы на диске не обновляются.
  • Выполнение теста с горячей перезагрузкой не работает с командой Тест>Запустить все тестыЗапустить все тесты в представлении в обозревателе тестов и командой Запустить все тесты из узла решения в обозревателе решений. Это связано с тем, что сейчас эти команды используются для выполнения сборки всего решения.
  • При запуске тестов для неподдерживаемых целевых платформ (до .NET 6.0) выполняется сборка проекта.
  • Если вы обнаружите какие-либо несоответствия между тем, что находится на диске, и тем, что показано в обозревателе тестов, рекомендуем выполнить сборку решения или проекта с помощью клавиш CTRL+SHIFT+B, а затем запустить тесты. При выполнении любой явной сборки результаты тестов с горячей перезагрузкой будут заменены результатами обычных тестов на основе полной сборки.

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

  • Выполнение теста с горячей перезагрузкой не выполняется в следующих сценариях:
    • Объем протестированного кода
    • Динамическое модульное тестирование
    • Профилирование
    • Отладка
  • Трассировки стека могут быть недоступными для чтения с наличием нечитаемых токенов. Эта проблема отслеживается здесь и планируется для исправления в .NET 7.0
    • Рекомендуемым обходным решением в этом случае будет выполнение сборки проекта и повторный запуск теста.

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

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

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