Создавайте модульные тесты в представлении GitHub Copilot Chat

Завершено

Представление «Чат» в Visual Studio Code — это основное место, где можно создавать модульные тесты с помощью GitHub Copilot. В представлении чата можно настроить платформу тестирования, создать тесты для файла или выбора и уточнить результаты до тех пор, пока тесты не соответствуют соглашениям проекта. В этом уроке основное внимание уделяется режиму агента, который записывает созданные тесты непосредственно в тестовый файл, может выполнять полученные тесты и выполнять итерацию сбоев — все из одного запроса чата. Вы также можете использовать режим ask заранее для изучения параметров тестирования без внесения изменений в файл.

Открытие представления чата

Откройте представление чата с помощью любого из следующих параметров:

  • Нажмите Ctrl + Alt + I (Windows/Linux) или Cmd + Alt + I (macOS).
  • Щелкните значок GitHub Copilot в строке заголовка и выберите Toggle Chat.

Представление "Чат" открывается во вторичной боковой панели и предоставляет три варианта настройки, которые влияют на каждый отправляемый вами запрос:

  • Целевая среда агента: где работает агент. Выберите "Локальный" для интерактивного запуска агента в редакторе с полным доступом к рабочей области, средствам и моделям.
  • Агент: Роль, которую ИИ принимает в ходе сеанса. Встроенные локальные агенты: Ask, Plan и Agent.
  • Уровень разрешений. Сколько автономности агент имеет при вызове средств и команд терминала. Параметры включают утверждения по умолчанию, обход утверждений и автопилот.

Для создания модульного теста рекомендуемая отправная точка — агент с утверждениями по умолчанию. Режим агента может изменять файлы, запускать команды в терминале и перезапускать тесты, поэтому он может принять запрос вроде «создать тесты для этого метода» и сгенерировать рабочий файл тестов, который вам останется только проверить. Подтверждения по умолчанию держат вас в курсе, запрашивая подтверждение для каждого вызова инструмента.

При необходимости используйте режим "Запрос" для изучения вариантов тестирования в первую очередь

Режим Ask отвечает на вопросы в чате, не изменяя файлы и не вызывая инструменты. Это хорошо подходит, когда вы хотите заранее спланировать порядок действий, прежде чем позволить Агенту что-либо изменить. Используйте режим «Спросить», если вы хотите:

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

Чтобы использовать режим "Запрос" для анализа:

  1. Откройте окно чата и выберите "Запрос" из меню выбора агента.

  2. Вложите соответствующий файл или выбранный фрагмент в качестве контекста (например, с помощью #selection или перетащив файл).

  3. Задайте вопрос анализа. Например: What edge cases should I cover when testing the CalculateDiscount method? List the scenarios and explain why each one matters.

  4. Просмотрите ответ, а затем переключите средство выбора агента на агент , чтобы создать фактические тесты.

Настройка платформы тестирования с помощью /setupTests

Если проект еще не настроен на тестовую платформу, GitHub Copilot может рекомендовать ее и выполнить действия по настройке. Команда со слешем /setupTests работает с любым агентом, но режим Agent также может устанавливать пакеты и создавать для вас тестовый проект.

  1. Откройте представление чата и выберите агент из средства выбора агента.

  2. /setupTests Введите команду в поле ввода чата.

  3. Подтвердите вызовы инструментов и команды терминала, которые агент предлагает использовать, чтобы установить пакеты, создать каркас тестового проекта и порекомендовать расширения Visual Studio Code для тестирования.

/setupTests является наиболее полезным при запуске нового тестового проекта или подключении проекта, который еще не включает тесты.

Создание тестов с помощью /tests

Команда со слэшем /tests генерирует модульные тесты для кода, который в данный момент открыт в редакторе. В режиме агента созданные тесты записываются непосредственно в соответствующий тестовый файл. GitHub Copilot обнаруживает существующую платформу тестирования и стиль написания кода и создает тесты, соответствующие.

Чтобы создать тесты для всего файла:

  1. Откройте файл кода приложения, который требуется проверить.

  2. Откройте представление чата и убедитесь, что выбран агент .

  3. В поле ввода чата введите /tests, а затем любые дополнительные указания. Например: /tests Generate unit tests for the methods in this file. Include success, failure, and edge cases.

  4. Подтвердите вызовы средства, которые агент использует для чтения контекста, записи тестов и (при необходимости) их выполнения.

  5. Просмотрите изменения, примененные агентом.

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

  6. Нажмите кнопку "Сохранить " или "Отменить ", чтобы принять или отменить изменения.

Чтобы создать тесты для определенного метода или блока кода:

  1. Откройте файл кода приложения.

  2. Выберите метод или блок, который требуется проверить.

  3. В представлении «Чат» введите /tests, а затем инструкции, которые ссылаются на выделенный фрагмент. Например: /tests Generate unit tests for the selected method. Validate both success and failure, and include edge cases.

  4. Просмотрите и сохраните или отмените полученные изменения.

Создавайте тесты с помощью запроса на естественном языке

Вам не нужно использовать слэш-команду. Агент создает тесты из запросов естественного языка при включении достаточного контекста. Примеры:

  • "Создайте тесты xUnit для методов в этом файле и добавьте их в проект Calculator.Tests".
  • Напишите модульные тесты для метода CalculateDiscount, включая граничные случаи для отрицательных значений и нуля. Запустите тесты после их написания.
  • "Создайте тесты интеграции для уровня доступа к данным в этом модуле".

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

Добавьте контекст к вашим запросам

Качество созданных тестов зависит от предоставленного контекста. Используйте один или несколько следующих параметров для присоединения контекста к запросу представления чата:

  • Кнопка "Добавить контекст" : откройте быстрый выбор для добавления файлов, папок, символов или текущего выбора редактора.
  • Перетаскивание: Перетащите файлы из панели «Проводник» или вкладку редактора на панель чата, чтобы прикрепить их содержимое.
  • # упоминания: Введите #, а затем имя файла, папки или символа, чтобы добавить его в контекст. Используйте #selection, чтобы прикрепить текущее выделение в редакторе, или #codebase, чтобы GitHub Copilot мог найти в рабочей области релевантный контекст.
  • Внешние файлы: открытие файлов markdown (например, рекомендации участника или соглашения о тестах) в редакторе и их присоединение с помощью add context. Агент использует содержимое для формирования созданных тестов.

Например, если в редакторе отображается один метод, можно задать следующее: Write a unit test for the method in #editor Если несколько методов видимы или целевой метод выходит за пределы видимой области, сначала выберите код и попросите: #selection write unit tests for the selected code

Просмотреть и доработать изменения агента

Несмотря на то, что агент записывает тесты непосредственно в тестовый проект, вы остаетесь под контролем:

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

Персонализация создания тестов с помощью пользовательских инструкций

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

  • Укажите предпочтительные платформы тестирования (например, xUnit вместо NUnit).
  • Определите соглашения об именовании для тестовых классов и методов.
  • Задайте предпочтения для структуры кода, такие как паттерн Arrange-Act-Assert.
  • Запрос конкретных шаблонов тестов, таких как параметризованные тесты для значений границ.

Храните пользовательские инструкции в файле *.instructions.md в рабочей области. applyTo Используйте поле метаданных, чтобы применить инструкции только к тестируемым файлам. Например, значение applyTo: tests/** ограничивает действие инструкций файлами в каталоге tests/. Общий доступ к файлу в системе управления версиями предоставляет каждому разработчику в команде одинаковый контекст тестирования.

Important

Созданные тестовые случаи могут не охватывать каждый сценарий. Проверка вручную и проверка кода по-прежнему необходимы для обеспечения качества тестов.