Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Тестовые запуски в Visual Studio включают создание проекта для обновления двоичных файлов на диске перед использованием тестовой платформы для выполнения тестов. Время сборки в Visual Studio может отличаться в зависимости от типа изменений, внесенных в код. Для более крупных решений сборки могут быть самой дорогой частью тестового запуска. В Visual Studio 2022 и более поздних версиях выполнение теста с горячей перезагрузкой можно включить, чтобы ускорить выполнение теста, пропуская сборки для поддерживаемых сценариев.
Что поддерживается?
- Проекты C# и VB, предназначенные для .NET 6.0 и более поздних версий
- Тестовые проекты, созданные для конфигурации DEBUG
- Visual Studio 2022 и более поздних версий
Включение тестового выполнения с помощью горячей перезагрузки
Включите эту функцию, выбрав Test>Options>"(Экспериментальное) Включить возможность горячей перезагрузки тестов для проектов тестирования на C# и VB, ориентированных на .NET 6 и более поздние версии".
Почему это считается экспериментальным?
Это новый способ выполнения теста, в котором мы изменяем широко используемый путь проверки кода. Мы также ожидаем, что взаимодействие пользователя с этой функцией изменится по мере получения дополнительных отзывов от пользователей. По этим двум причинам мы в настоящее время назвали эту функцию "экспериментальной".
Принцип работы
После включения параметра обозреватель тестов автоматически будет использовать выполнение теста с горячей перезагрузкой, когда это возможно. Если горячая перезагрузка невозможна, это возвратится к обычному поведению сборки и выполнения тестов. В качестве пользователя, выполняющего тесты, вам не нужно вносить изменения в рабочий процесс (т. е. продолжать изменять код и выполнять тесты).
Под капотом мы используем ту же инфраструктуру Edit and Continue, которая существует в недавно выпущенном интерфейсе "горячей перезагрузки", позволяющем редактировать код C#/VB во время выполнения, чтобы определить внесенные изменения. По этой причине горячая перезагрузка выполняется только в том случае, если нет "грубых изменений", в этом случае мы возвращаемся к созданию тестов перед их выполнением. Дополнительные сведения о поддерживаемых изменениях см. в документации по редактированию и продолжению
Сколько быстрее будет выполняться тест?
Существует множество переменных, которые влияют на процесс оценки того, сколько времени эта функция сохранит вам. Рассмотрим пример.
- Сколько времени занимает сборка проекта.
- Какой вид редактирования был сделан.
- Насколько велик файл, где была сделана правка.
- Где было сделано изменение (если это был конечный проект или нет).
В конечном счете, улучшения скорости будут напрямую связаны с временем сборки, которое произошло бы при проведении этого конкретного теста.
Примечания.
- Первый тестовый запуск после включения опции или открытия Visual Studio потребует сборки проекта.
- Файлы в редакторе могут не сохраняться при выполнении тестов. Чтобы устранить эти и перед возвратом, убедитесь, что выполняется полная сборка (CTRL+SHIFT+B).
- Двоичные файлы на диске не обновляются при динамическом выполнении теста с горячей перезагрузкой.
- Выполнение тестов с горячей перезагрузкой не работает с "Запуск всех тестов", ">" в обозревателе тестов, а также не работает с Запуск всех тестов из узла решения в обозревателе решений. Эта функция не работает с этими командами, так как в настоящее время они гарантируют создание всего решения.
- При выполнении тестов с неподдерживаемых целевых платформ (ниже .NET 6.0) происходит сборка проекта.
- Если вы видите какие-либо несоответствия между тем, что находится на диске и что отображает обозреватель тестов, рассмотрите возможность сборки решения или проекта с помощью CTRL+SHIFT+B , а затем выполните тесты. Любая явная сборка заменяет результаты теста горячей перезагрузки обычными результатами теста полной сборки.
Известные проблемы
- Выполнение теста с горячей перезагрузкой не выполняется в следующих сценариях:
- Объем протестированного кода
- Динамическое модульное тестирование
- Составление профиля
- Отладка
- Трассировки стека могут быть трудночитаемы из-за наличия непрочитаемых маркеров. Эта проблема отслеживается здесь и планируется для исправления в .NET 7.0
- Рекомендуемое решение в этом случае — создать проект и повторно запустить тест.
Ваши отзывы важны
Как отмечалось ранее, для завершения этой экспериментальной функции нам потребуется ваш отзыв. Если у вас есть предложение о том, каким должен быть опыт, или возникнут какие-либо проблемы, пожалуйста, уделите минуту, чтобы сообщить нам о них. Только с вашим отзывом мы можем убедиться, что критически важные проблемы устранены, и будущие решения будут определены в соответствии с вашими входными данными.
Чтобы обратиться к нам, используйте механизм обратной связи Visual Studio.