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


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

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

Хотя Copilot может создавать модульные тесты, вы получаете дополнительные возможности тестирования с помощью тестирования GitHub Copilot для .NET в Visual Studio, включая следующие:

  • Модульные тесты создаются в отдельном проекте в решении.
  • Copilot создает тесты детерминированно, основано на семантике компилятора C# и языка, поэтому утверждения и пограничные варианты являются предсказуемыми и типобезопасны.
  • Тестирование GitHub Copilot подразумевает создание модульных тестов после генерации тестов. Если возникают ошибки, возможность модульного тестирования в GitHub Copilot для .NET пытается определить и исправить ошибки, а затем повторно выполнить тесты.
  • Тестирование GitHub Copilot выполняет тесты с помощью обозревателя тестов.

Тестирование GitHub Copilot для .NET создает тесты для проектов C# только с помощью платформ MSTest, NUnit и xUnit. Если решение уже имеет модульные тесты в NUnit или xUnit, тестирование GitHub Copilot для .NET создает новые тесты в той же платформе модульного тестирования. Если в решении нет модульных тестов, новые тесты создаются с помощью MSTest.

Предпосылки

Чтобы начать, вам нужно:

Замечание

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

Общие сведения о модульном тестировании см. в основных принципах модульного тестирования.

Способы запуска тестирования GitHub Copilot

Вы можете запустить тестирование GitHub Copilot для .NET несколькими способами:

  • В Copilot Chat введите @Test, затем целевую строку или запрос в окно чата.
  • В редакторе щелкните правой кнопкой мыши, чтобы открыть контекстное меню и выберите "Действия Copilot>Создать тесты".
  • В новом потоке чата Copilot выберите "Написать модульные тесты" из предложений Copilot Chat.

Замечание

Контекстное меню и опции взаимодействия автоматически направляются агенту @Test, когда фокус интегрированной среды разработки находится на коде C#. Для проектов, не относящихся к C#, эти параметры используют универсальный запрос Copilot.

Синтаксис запроса

Тестирование GitHub Copilot поддерживает два метода запроса: структурированный синтаксис и запросы свободной формы.

Структурированный синтаксис

@Test #<target> Используйте синтаксис для создания тестов для определенных элементов кода:

@Test #<target>

Где #<target> может быть:

  • Член, класс, файл, проект или решение
  • Дифф Git для тестирования текущих изменений (#git_changes)
  • Несколько входных данных одного типа (например, несколько классов или нескольких файлов)

Замечание

Смешанные типы входных данных не поддерживаются. Например, нельзя объединить файл и проект в одном запросе.

Примеры:

  • @Test #BankAccount — создание тестов для класса BankAccount
  • @Test #git_changes — Сгенерируйте тесты для текущих незафиксированных изменений
  • @Test #MyProject — создание тестов для всего кода в MyProject

Запросы свободной формы

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

@Test <your prompt>

Примеры:

Подсказка Description
@Test class Foo Создание тестов для определенного класса
@Test generate tests for the core logic in my #solution Целевые области базы кода
@Test write unit tests for my current changes Генерировать тесты для незафиксированных изменений в Git
@Test fix my failing tests Попросите Copilot исправить неудачные тесты
@Test class Bar, targeting 80% code coverage Указание целевого объекта покрытия
@Test use xUnit with FluentAssertions Указание платформ тестирования и соглашений

Подсказка

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

Дополнительные команды

Тестирование GitHub Copilot предоставляет команды для справки и управления предпочтениями:

Command Description
@Test /help Отображение сообщения справки с доступными командами и синтаксисом
@Test /clear-preferences Очистка сохраненных параметров пользователя, включая параметры согласия

Создание и запуск тестов

  1. Откройте существующий проект C#, который нуждается в новых тестах.

    Если у вас нет существующего проекта, можно создать новый проект, а затем использовать пример кода приложения Банка для экспериментов с модульным тестированием. Скопируйте начальный пример кода из раздела Создание и запуск модульных тестов для .NET в Program.cs.

  2. Создайте проект.

    Убедитесь, что проект выполняет сборку без ошибок, чтобы упростить процесс.

  3. В Visual Studio выберите View > GitHub Copilot Chat.

  4. Используйте любой из методов запроса на запуск тестирования GitHub Copilot.

    Для примера приложения Bank используйте одно из следующих вариантов:

    • Структурированный: @Test #BankAccount
    • Freeform: @Test generate comprehensive tests for the BankAccount class

    Замечание

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

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

    Снимок экрана: команда для создания тестов.

  5. В окне чата нажмите кнопку "Отправить".

    Тестирование GitHub Copilot для .NET инициирует итеративный процесс анализа кода, создания нового проекта для модульных тестов, создания тестов, сборки и выполнения тестов.

    Создание тестов — это длительный процесс. В зависимости от области целевого объекта (файла, проекта, решения и т. д.) может потребоваться некоторое время.

    Снимок экрана с началом генерации тестов в Copilot.

    При создании модульных тестов тесты отображаются в отдельном тестовом проекте в решении.

    Снимок экрана: созданный пример теста.

    Обозреватель тестов показывает результаты. Если обозреватель тестов не открывается автоматически с помощью тестирования GitHub Copilot, выберитеобозреватель тестов>.

    Снимок экрана: выходные данные обозревателя тестов.

    На этом этапе вы можете вручную использовать обозреватель тестов для продолжения выполнения тестов или чата с Copilot о результатах теста. Вы также можете использовать Copilot для отладки неудачных тестов. Дополнительные сведения см. в разделе "Отладка модульных тестов".