Влияние теста на частично сопоставленные репозитории TFVC в TFS/Azure DevOps Services

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Анализ влияния на тест (TIA) является частью задачи VSTest , начиная с версии 2 задачи. Эта функция помогает ускорить цикл DevOps, помогая выполнять только соответствующие тесты для сборки. В конечном итоге выполняются тесты, которые влияют на входящие изменения, а не весь набор тестов. Дополнительные сведения о анализе влияния на тест см. в статье "Ускорение тестирования" с помощью анализа влияния тестов (TIA).

Помимо поддержки GitHub и Git в Azure DevOps, TIA также поддерживает TFVC. В этой статье описывается известное ограничение о TIA в конвейерах сборки и выпуска на основе TFVC и работы, чтобы обойти это ограничение.

Проблема с частично сопоставленными репозиториями TFVC

Способ работы TIA заключается в сборе данных о файлах, касающихся метода тестирования во время первого запуска, также называемого базовым запуском строки. Сборщик, который собирает эти данные, имеет видимость только включенного репозитория на компьютере агента. С помощью конвейеров на основе TFVC можно включить частичные репозитории. Например, рассмотрим репозиторий, имеющий следующую структуру.

Структура репозитория TFVC

Теперь в конвейере сборки и выпуска вы увидите плитку "Получить источники" в разделе "Процесс ", как показано в следующем примере.

Получить источники

Выберите " Получить источники" и вы увидите параметры в правой колонке, чтобы частично сопоставить репозиторий.

Репозиторий карт

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

Частично сопоставить репозиторий

Если репозиторий TFVC частично включен, TIA не сможет найти затронутые тесты, так как сборщик может собирать изменения только для частично заверяемого репозитория в агенте и не имеет видимости всего пути. При изменении кода с сервера он предоставляет весь путь, и попытка сопоставления с сопоставленным путем завершается ошибкой.

Обходное решение

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

Исправление частично сопоставленного репозитория

Это гарантирует правильность списка путей сервера, собранных сборщиком и затронутыми тестами.