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


Обзор тестирования GitHub Copilot для .NET

Тестирование GitHub Copilot для .NET — это возможность в GitHub Copilot Chat, интегрированная в Visual Studio. Эта функция автоматизирует создание, выполнение и тестирование кода C# для всех проектов, решений, файлов, классов или членов. Он предназначен для разработчиков C#, которые хотят быстро инициализировать комплексное покрытие тестов, не разрабатывая каждый тестовый случай вручную. Тестирование GitHub Copilot может создавать тесты для платформ тестов xUnit, NUnit и MSTest.

В отличие от одноразовых запросов в режиме агента Copilot, тестирование GitHub Copilot для .NET предлагает управляемый, длительный процесс, разработанный специально для создания тестов. Он создает детерминированные результаты, базированные в компиляторе C# и семантике языка, с глубокой осведомленностью о базе кода, структуре файлов и соглашениях о тестировании, чтобы обеспечить прогнозируемые, контекстно-соответствующие тесты.

Предпосылки

Замечание

Для тестирования GitHub Copilot для .NET требуется платная подписка GitHub Copilot (отдельная, бизнес или корпоративная). Бесплатные подписки Copilot не поддерживаются.

Зачем использовать тестирование GitHub Copilot для .NET?

Тестирование GitHub Copilot для .NET обеспечивает комплексный опыт по сравнению с более общими возможностями Copilot, связанными с созданием тестов. Возможность модульного тестирования в GitHub Copilot для .NET предоставляет следующие возможности:

  • Эффективность: Автоматическое создание, сборка и запуск модульных тестов C# для больших или небольших проектов или решений.
  • Последовательность: Убедитесь, что тесты соответствуют рекомендациям и стандартам проекта. Тесты создаются в отдельном тестовом проекте в решении и создаются с помощью платформ xUnit, NUnit и MSTest. Если решение уже имеет модульные тесты в NUnit или xUnit, тестирование GitHub Copilot для .NET создает новые тесты в той же платформе модульного тестирования. Если в решении нет модульных тестов, новые тесты создаются с помощью MSTest.
  • Интеграция: Работает без проблем в Visual Studio, используя возможности ИИ Copilot.
  • Предсказуемость: Copilot создает тесты детерминированно, основано на семантике компилятора C# и языка, поэтому утверждения и пограничные варианты прогнозируются и типобезопасны.

Ключевые особенности

  • Автоматическое создание тестов в масштабе: Создайте тесты для отдельных файлов, нескольких файлов в одном проекте или целых решениях.
  • Взаимодействие на основе команд: Используйте поддерживаемые команды и параметры (перечисленные /help в сообщении в тестировании GitHub Copilot).
  • Гибкие подсказки: Используйте структурированный синтаксис @Test #<target>, чтобы нацелить конкретный код, или свободные текстовые подсказки на естественном языке, чтобы описать, что вы хотите протестировать.

Что может сделать тестирование GitHub Copilot

При включении этой возможности тестирование GitHub Copilot взаимодействует с решением несколькими способами для создания и проверки тестов:

  • Читать: Copilot анализирует исходный код и структуру проекта, чтобы понять контекст и зависимости.
  • Писать: Он создает или обновляет тестовые файлы в решении на основе его предложений.
  • Сборка: Инструмент запускает сборки для компиляции вашего кода, чтобы убедиться, что созданные тесты интегрируются правильно.
  • Исполнить: Он выполняет тесты для подтверждения их успешности и предоставления обратной связи об охвате и качестве.

Это важно

Тестирование Copilot не изменяет рабочий код за пределами процесса создания тестов. Все изменения происходят в локальной среде разработки, и вы сохраняете полный контроль для просмотра, принятия или отмены предложений.

Действия, выполняемые агентом @Test

Агент @Test выполняет различные действия во время создания тестов. Общие сведения об этих действиях помогут вам узнать, что ожидать при использовании средства.

Операции сборки и тестирования

Агент использует API Visual Studio (например dotnet restore , не инструменты командной строки или dotnet test) для выполнения следующих операций:

  • Восстановление и сборка: восстанавливает пакеты и компилирует проекты в зависимости от масштаба (от одного проекта до всего решения).
  • Выполнение тестов: в основном выполняет только созданные тесты. Однако для вычисления начального и итогового покрытия кода (и режима оптимизации покрытия) агент выполняет все тесты в заданной области.
  • Процесс git diff: при использовании режима диффа (#git_changes) агент анализирует незафиксированные изменения для создания целевых тестов.

Установка пакета

Агент устанавливает пакеты NuGet по мере необходимости:

  • Пакеты платформ тестирования (MSTest, NUnit или xUnit)
  • Макет пакетов платформы, если он еще не присутствует
  • Покрытие и расширения TRX для платформы тестирования Майкрософт (MTP), если они отсутствуют

Операции LLM

Агент обращается с запросами к LLM для:

  • Анализ свободной формы запроса
  • Сводная обработка
  • Создание тестов

Изменения проекта и файла

Агент создает тестовый проект, если он не существует для целевого кода.

Агент использует кастомную файловую систему со следующими гарантиями:

  • Область: Агент никогда не считывает или записывает файлы за пределами корневого каталога репозитория (за исключением журналов).
  • Выбор только для чтения. По возможности агент использует файловую систему только для чтения, которая предотвращает действия записи.

Агент может записывать в следующие файлы:

  • Тестирование файлов проекта
  • Исходные файлы проекта (например, добавление InternalsVisibleTo атрибутов)
  • Файлы решений (косвенно через API Visual Studio, например при добавлении проекта)
  • Тестовые исходные файлы

Вопросы безопасности

При первом запуске тестирования GitHub Copilot для .NET, Copilot запрашивает ваше согласие на выполнение кода, созданного LLM, на вашем компьютере. Это может включать такие действия, как установка или восстановление пакетов NuGet и выполнение тестов. Если вы не предоставляете общего согласия, тестирование GitHub Copilot запросит явное разрешение перед выполнением операции.

Caution

Ваше согласие предоставляет Copilot возможность автоматически вызывать произвольные команды в сеансе Visual Studio. Корпорация Майкрософт не может гарантировать безопасность этих команд. Этот коммутатор следует включить только в изолированной среде, и необходимо предпринять шаги, чтобы ограничить привилегии, доступные для этой среды. Например, песочница не должна использовать учетную запись, подключенную к облаку, для входа в Windows, и песочница не должна быть зарегистрирована в Visual Studio с помощью привилегированной учетной записи GitHub, имеющей доступ на чтение к недоступным репозиториям или доступ на запись к рабочим репозиториям.

Дальнейшие шаги

См. статью "Создание и запуск тестов с помощью тестирования GitHub Copilot для .NET в Visual Studio".