Как тестировать код в Visual Studio 2019
Обновлено: 21.11.2024
Убедитесь, что ваш код работает должным образом, создав и запустив модульные тесты. Это называется модульным тестированием, потому что вы разбиваете функциональность вашей программы на отдельные тестируемые варианты поведения, которые вы можете тестировать как отдельные модули. Visual Studio Test Explorer предоставляет гибкий и эффективный способ запуска модульных тестов и просмотра их результатов в Visual Studio. Visual Studio устанавливает платформы модульного тестирования Майкрософт для управляемого и машинного кода. Используйте среду модульного тестирования, чтобы создавать модульные тесты, запускать их и сообщать о результатах этих тестов. Повторно запускайте модульные тесты при внесении изменений, чтобы проверить, правильно ли работает ваш код. Visual Studio Enterprise может делать это автоматически с помощью Live Unit Testing, который обнаруживает тесты, затронутые вашими изменениями кода, и запускает их в фоновом режиме по мере ввода.
Модульное тестирование оказывает наибольшее влияние на качество кода, когда оно является неотъемлемой частью рабочего процесса разработки программного обеспечения. Как только вы пишете функцию или другой блок кода приложения, создавайте модульные тесты, которые проверяют поведение кода в ответ на стандартные, граничные и неправильные случаи ввода данных, а также проверяют любые явные или неявные предположения, сделанные кодом. . При разработке через тестирование модульные тесты создаются до написания кода, поэтому модульные тесты используются как в проектной документации, так и в функциональных спецификациях.
Test Explorer также может запускать сторонние платформы модульного тестирования и платформы с открытым исходным кодом, в которых реализованы дополнительные интерфейсы Test Explorer. Многие из этих платформ можно добавить с помощью диспетчера расширений Visual Studio и галереи Visual Studio. Дополнительные сведения см. в разделе Установка сторонних платформ модульного тестирования.
Начать
Введение в модульное тестирование, которое поможет вам непосредственно приступить к написанию кода, см. в одной из следующих тем:
Пример решения MyBank
Наша первая попытка разработки приложения MyBank включает компонент учетных записей, представляющий отдельный счет и его транзакции в банке, а также компонент базы данных, предоставляющий функциональные возможности для агрегирования и управления отдельными счетами.
Мы создаем решение MyBank, содержащее два проекта:
Наша первая попытка разработки проекта Accounts содержит класс для хранения основной информации об учетной записи, интерфейс, определяющий общую функциональность любого типа учетной записи, например ввод и вывод активов из учетной записи, и класс, производный от интерфейс, представляющий расчетный счет. Мы начинаем проекты Accounts с создания следующих исходных файлов:
AccountInfo.cs определяет основную информацию об учетной записи.
IAccount.cs определяет стандартный интерфейс IAccount для учетной записи, включая методы ввода и вывода активов из учетной записи и получения баланса учетной записи.
CheckingAccount.cs содержит класс CheckingAccount, реализующий интерфейс IAccount для текущего счета.
Из опыта мы знаем, что при снятии средств с расчетного счета необходимо убедиться, что снимаемая сумма меньше остатка на счете. Поэтому мы переопределяем метод IAccount.Withdraw в CheckingAccount методом, который проверяет это условие. Метод может выглядеть следующим образом:
Теперь, когда у нас есть код, пришло время его тестирования.
Создание проекта модульного тестирования и заготовок модульного теста
В окне редактора кода щелкните правой кнопкой мыши и выберите "Создать модульные тесты" в контекстном меню.
Нажмите «ОК», чтобы принять значения по умолчанию для создания ваших модульных тестов, или измените значения, используемые для создания и названия проекта модульного теста и модульных тестов. Вы можете выбрать код, который по умолчанию добавляется к методам модульного тестирования.
Заглушки модульного теста создаются в новом проекте модульного теста для всех методов класса.
Теперь давайте перейдем к написанию тестов, чтобы сделать ваш модульный тест более осмысленным, а также к дополнительным модульным тестам, которые вы можете добавить для тщательного тестирования своего кода.
Создайте проект модульного тестирования и модульные тесты вручную
Проект модульного тестирования обычно отражает структуру одного проекта кода. В примере с MyBank вы добавляете в решение MyBanks два проекта модульного тестирования с именами AccountsTests и BankDbTests. Имена тестовых проектов произвольны, но рекомендуется принять стандартное соглашение об именах.
Чтобы добавить проект модульного тестирования в решение:
В диалоговом окне "Новый проект" разверните узел "Установлено", выберите язык, который вы хотите использовать для своего тестового проекта, а затем выберите "Тест".
Чтобы использовать одну из платформ модульного тестирования Майкрософт, выберите Проект модульного тестирования из списка шаблонов проектов. В противном случае выберите шаблон проекта платформы модульного тестирования, который вы хотите использовать. Чтобы протестировать проект Accounts из нашего примера, вы должны назвать его AccountsTests .
Не все сторонние платформы модульного тестирования и платформы модульного тестирования с открытым исходным кодом предоставляют шаблон проекта Visual Studio. Обратитесь к рамочному документу для получения информации о создании проекта.
Введите test в поле поиска шаблона проекта, чтобы найти шаблон проекта модульного тестирования для платформы тестирования, которую вы хотите использовать. (В примерах в этом разделе мы используем MSTest.)
На следующей странице дайте название проекту. Чтобы протестировать проект Accounts из нашего примера, вы можете назвать его AccountsTests .
В проекте модульного тестирования добавьте ссылку на тестируемый проект кода, в нашем примере — на проект Accounts.
Чтобы создать ссылку на проект кода:
В проекте модульного теста в обозревателе решений щелкните правой кнопкой мыши узел "Ссылки" или "Зависимости" и выберите "Добавить ссылку на проект" или "Добавить ссылку", в зависимости от того, что доступно.
В диалоговом окне "Диспетчер ссылок" откройте узел "Решение" и выберите "Проекты". Выберите имя проекта кода и закройте диалоговое окно.
Каждый проект модульного тестирования содержит классы, которые отражают имена классов в проекте кода. В нашем примере проект AccountsTests будет содержать следующие классы:
Класс AccountInfoTests содержит методы модульного тестирования для класса AccountInfo в проекте Accounts
Класс CheckingAccountTests содержит методы модульного тестирования для класса CheckingAccount.
Напишите свои тесты
Используемая вами среда модульного тестирования и Visual Studio IntelliSense помогут вам написать код для модульных тестов для проекта кода. Для запуска в обозревателе тестов большинство платформ требуют добавления определенных атрибутов для определения методов модульного тестирования. Платформы также предоставляют способ — обычно с помощью утверждений или атрибутов метода — указать, прошел ли метод тестирования или нет. Другие атрибуты определяют необязательные методы установки, которые выполняются при инициализации класса и перед каждым методом тестирования, а также методы разрыва, которые запускаются после каждого метода тестирования и перед уничтожением класса.
Шаблон AAA (Arrange, Act, Assert) — это распространенный способ написания модульных тестов для тестируемого метода.
Раздел Arrange метода модульного тестирования инициализирует объекты и устанавливает значение данных, которые передаются тестируемому методу.
Раздел Act вызывает тестируемый метод с упорядоченными параметрами.
Дополнительные сведения о платформах модульного тестирования Майкрософт см. в одном из следующих разделов:
Установить время ожидания для модульных тестов
Если вы используете платформу MSTest, вы можете использовать TimeoutAttribute, чтобы установить время ожидания для отдельного метода тестирования:
Чтобы установить максимально допустимое время ожидания:
Запуск тестов в обозревателе тестов
При создании тестового проекта тесты отображаются в обозревателе тестов. Если обозреватель тестов не отображается, выберите «Тест» в меню Visual Studio, выберите «Windows», а затем выберите «Обозреватель тестов» (или нажмите Ctrl + E, T).
По мере запуска, написания и повторного запуска тестов обозреватель тестов может отображать результаты в группах "Неудачные тесты", "Пройденные тесты", "Пропущенные тесты" и "Не выполненные тесты". Вы можете выбрать другую группу по параметрам на панели инструментов.
Вы также можете отфильтровать тесты в любом представлении, сопоставив текст в поле поиска на глобальном уровне или выбрав один из предопределенных фильтров. Вы можете запустить любой набор тестов в любое время. Результаты тестового прогона сразу видны на полосе «годен/не годен» в верхней части окна проводника. Подробная информация о результатах метода тестирования отображается при выборе теста.
Запуск и просмотр тестов
Панель инструментов обозревателя тестов помогает находить, упорядочивать и запускать интересующие вас тесты.
Вы можете выбрать «Выполнить все», чтобы запустить все тесты (или нажмите Ctrl + R, V), или выбрать «Выполнить», чтобы выбрать подмножество тестов для запуска (Ctrl + R, T). Выберите тест, чтобы просмотреть сведения об этом тесте на панели сведений о тесте. Выберите «Открыть тест» в контекстном меню (клавиатура: F12), чтобы отобразить исходный код выбранного теста.
Если у отдельных тестов нет зависимостей, препятствующих их запуску в любом порядке, включите параллельное выполнение тестов с помощью переключателя на панели инструментов. Это может заметно сократить время выполнения всех тестов.
Если у отдельных тестов нет зависимостей, препятствующих их запуску в любом порядке, включите параллельное выполнение тестов в меню настроек на панели инструментов. Это может заметно сократить время выполнения всех тестов.
Выполнять тесты после каждой сборки
Кнопка | Описание | ||
---|---|---|---|
Для запуска модульных тестов после каждой сборки требуется выпуск Visual Studio 2017 Enterprise или Visual Studio 2019. В Visual Studio 2019 эта функция доступна в выпусках Community и Professional в дополнение к выпуску Enterprise. Чтобы запускать модульные тесты после каждой локальной сборки, откройте значок настроек на панели инструментов обозревателя тестов и выберите "Выполнить тесты после сборки". Отфильтровать и сгруппировать список тестовЕсли у вас есть большое количество тестов, вы можете ввести их в поле поиска обозревателя тестов, чтобы отфильтровать список по указанной строке. Вы можете ограничить событие фильтра, выбрав его из списка фильтров.
|