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


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

В этой статье вы узнаете, как создавать модульные тесты и тестировать проекты в C# с помощью платформы xUnit с помощью команд Visual Studio и GitHub Copilot. Использование Visual Studio в сочетании с GitHub Copilot значительно упрощает процесс создания и написания модульных тестов.

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

Представьте, что есть класс ProductService с методом GetProductById, который зависит от интерфейсов IProductDataStorage и ICacheClient.

public class ProductService(
    IProductDataStorage productDataStorage,
    ICacheClient cacheClient)
{
    public async Task<Product?> GetProductById(int productId)
    {
        var product = await cacheClient.GetProduct(productId);

        if (product is not null)
        {
            return product;
        }

        product = await productDataStorage.GetProduct(productId);

        if (product is not null)
        {
            await _cacheClient.SetProduct(product);
        }

        return product;
    }
}

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

  • Выберите метод.
  • Щелкните правой кнопкой мыши и выберите Создать модульные тесты.

команда

В диалоговом окне создания модульных тестов выберите xUnit в раскрывающемся меню Test Framework.

Примечание.

Команда создания модульных тестов по умолчанию используется для платформы MSTest. Однако так как в этом примере используется xUnit, необходимо установить расширение Visual Studio xUnit.net.TestGenerator2022.

окно создания модульных тестов

  • Если у вас еще нет тестового проекта, выберите новый тестовый проект или выберите существующий.
  • При необходимости укажите шаблон для пространства имен, класса и имени метода, а затем нажмите кнопку ОК.

Через несколько секунд Visual Studio извлечет необходимые пакеты, и вы получите созданный проект xUnit с необходимыми пакетами и структурой, с ссылкой на тестируемый проект, классом и методом-заглушкой.

созданный метод заглушки

Создание самих тестов

  • Выберите тестируемый метод еще раз.

  • Щелкните правой кнопкой мыши и выберите "Ask Copilot".

  • Введите простой запрос, например:

    "Создание модульных тестов с помощью xunit, nsubstitute и вставка результата в файл #ProductServiceTests".

    При вводе # символа необходимо выбрать тестовый класс.

Подсказка

Для быстрого поиска желательно, чтобы ProductServiceTests открывалось на отдельной вкладке.

запрос для создания тестов

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

После установки пакетов можно выполнить тесты. Этот пример сработал с первого раза: Copilot знает, как работать с NSubstitute, и все зависимости были определены через интерфейсы.

Созданные тесты