Выполнение модульных тестов с помощью обозревателя тестов
С помощью обозревателя тестов вы можете запускать модульные тесты из Visual Studio или сторонних проектов модульного тестирования. Кроме того, обозреватель тестов позволяет группировать тесты по категориям, фильтровать список тестов, а также создавать, сохранять и запускать списки воспроизведения тестов. Вы также можете использовать Test Explorer для отладки модульных тестов, а также в Visual Studio Enterprise, для анализа объема протестированного кода.
Тесты в обозревателе тестов можно выполнять из нескольких тестовых проектов в решении, а также из тестовых классов, которые входят в производственные проекты. Тестовые проекты могут использовать различные платформы модульного тестирования. При написании тестируемого кода для платформы .NET тестовый проект можно написать на любом языке, который также ориентирован на платформу .NET, независимо от языка целевого кода. Проекты машинного кода C/C++ необходимо тестировать с помощью платформы модульного тестирования C++.
Сборка тестового проекта
Если вы еще не подготовили тестовый проект в решении Visual Studio, необходимо сначала создать его и выполнить его сборку.
Visual Studio включает платформу модульного тестирования Майкрософт для управляемого и машинного кода. Однако с помощью обозревателя тестов можно также запустить любую платформу модульного тестирования, в которой реализован адаптер обозревателя тестов. Дополнительные сведения об установке сторонних платформ модульного тестирования см. в разделе Установка платформ модульного тестирования сторонних поставщиков
Выполнение тестов в обозревателе тестов
При построении проекта тестирования тесты появляются в обозревателе тестов. Если тестовый Обозреватель не отображается, выберите "Тест" в меню Visual Studio и выберите "Тест" Обозреватель (или нажмите клавиши CTRL + E, T).
При запуске, записи и повторном запуске тестов результаты в обозревателе тестов отображаются в стандартных группах Проект, Пространство имен и Класс. Вы можете изменить способ группировки тестов обозревателем тестов.
Большую часть работы по поиску, организации и выполнению тестов можно выполнять из панели инструментов обозревателя тестов.
Выполнение тестов
Можно выполнить все тесты в решении, все тесты в группе или выбранный набор тестов. Выполните одно из следующих действий:
Чтобы выполнить все тесты в решении, выберите значок Выполнить все (или нажмите клавиши CTRL + R, V).
Чтобы выполнить все тесты в группе по умолчанию, выберите значок Запуск, а затем группу в меню.
Выберите отдельные тесты, которые требуется запустить, откройте контекстное меню для выбранного теста и щелкните Запустить выбранные тесты (или нажмите клавиши CTRL + R, T).
Если отдельные тесты не имеют зависимостей, предотвращающих запуск этих тестов в любом порядке, включите параллельное тестирование в меню параметров на панели инструментов. Это может заметно сократить время, необходимое для выполнения всех тестов.
Запуск тестов после каждой сборки
Чтобы запустить модульные тесты после каждой локальной сборки, на панели инструментов обозревателя тестов щелкните значок "Параметры" и выберите в меню пункт Выполнить тесты после сборки.
Просматривать результаты тестов
При выполнении, написании и повторном запуске тестов обозреватель тестов отображает результаты в группах Неудачные тесты, Пройденные тесты, Пропущенные тесты и Не запущенные тесты. В области сведений в нижней или боковой части окна обозревателя тестов отображается сводка тестового запуска.
Просмотр сведений о тесте
Для просмотра подробных сведений для отдельного теста выберите тест.
В области сведений о тесте отображаются следующие сведения.
Имя исходного файла и номер строки метода теста.
Состояние теста.
Время, затраченное на выполнение метода теста.
Если тест не пройден, в области сведений также отображается следующее:
сообщение, возвращенное платформой модульного тестирования для теста;
трассировка стека во время сбоя теста.
Просмотр исходного кода метода теста
Чтобы вывести исходный код для метода теста в редакторе Visual Studio, выберите тест, а затем в контекстном меню щелкните Открыть тест (или нажмите клавишу F12).
Группировка и фильтрация списка тестов
Обозреватель тестов позволяет группировать тесты в стандартные категории. Большинство платформ модульного тестирования, которые работают в обозревателе тестов, позволяют определить собственные категории и пары "категория — значение" для группировки тестов. Кроме того, список тестов можно фильтровать, сопоставляя строки со свойствами теста.
Группирование тестов в списке тестов
Обозреватель тестов позволяет группировать тесты в иерархию. Иерархические группы по умолчанию: Проект, Пространство имен, а затем Класс. Чтобы изменить способ упорядочения тестов, нажмите кнопку "Группа по" и выберите новый критерий группирования.
Вы можете определить собственные уровни иерархии и сгруппировать по состоянию, а затем классу, например, выбрав параметры "Группировать по" в порядке предпочтения.
Обозреватель тестов позволяет группировать тесты в иерархию. Иерархические группы по умолчанию: Проект, Пространство имен, а затем Класс. Чтобы изменить способ упорядочения тестов, нажмите кнопку "Группа по" и выберите новый критерий группирования.
Вы можете определить собственные уровни иерархии и сгруппировать по состоянию, а затем классу, например, выбрав параметры "Группировать по" в порядке предпочтения.
Группы обозревателя тестов
Групповой | Описание |
---|---|
Длительность | Группирует тесты по времени выполнения: быстрый, средний и медленный. |
Штат | Группирует тесты по результатам выполнения: неудачные тесты, пропущенные тесты, пройденные тесты, а не запуск |
Целевая рабочая среда | Группировка тестов по платформе цели их проекта. |
Пространство имен | Группировка тестов по пространству имен, к которому они относятся. |
Проект | Группировка тестов по проекту, к которому они относятся. |
Class | Группировка тестов по классу, в который они входят. |
Признаки
Признак обычно представляет собой пару "имя — значение" категории, однако может быть и отдельной категорией. Признаки могут назначаться методам, которые идентифицируются платформой модульного тестирования как методы теста. Платформа модульного тестирования может определять категории признаков. Чтобы определить собственные пары "имя — значение" категории, можно добавлять значения в категории признаков. Синтаксис для указания категорий и значений признаков определяется платформой модульного тестирования.
Признаки в платформе модульного тестирования Майкрософт для управляемого кода
На платформе модульного тестирования Майкрософт для управляемых приложений можно определить пару "имя — значение" признака в атрибутеTestPropertyAttribute. Платформа тестирования также содержит следующие стандартные признаки.
Характерная особенность | Description |
---|---|
OwnerAttribute | Категория "Владелец" определяется платформой модульного тестирования. Вы должны указать строковое значение владельца. |
PriorityAttribute | Категория "Приоритет" определяется платформой модульного тестирования. Вы должны указать целочисленное значение приоритета. |
TestCategoryAttribute | Атрибут TestCategory позволяет указать категорию модульного теста. |
TestPropertyAttribute | Атрибут TestProperty позволяет определять пары "категория — значение" признака. |
Признаки в платформе модульного тестирования Майкрософт для C++
См. раздел Использование платформы модульного тестирования Майкрософт для C++.
Создание настраиваемых списков воспроизведения
Вы можете создавать и сохранять список тестов, которые необходимо выполнять или просматривать как группу. При выборе списка воспроизведения тесты в списке отображаются на новой вкладке "Тест Обозреватель". Вы можете добавить тест в несколько списков воспроизведения.
Чтобы создать список воспроизведения, выберите один или несколько тестов в обозревателе тестов. В контекстном меню выберите Добавить в список воспроизведения>Новый список воспроизведения.
Список воспроизведения открывается на новой вкладке "Тест Обозреватель". Этот список воспроизведения можно использовать один раз, а затем отключить его карта или нажать кнопку "Сохранить" на панели инструментов списка воспроизведения, а затем выбрать имя и расположение для сохранения списка воспроизведения.
Чтобы создать список воспроизведения, выберите один или несколько тестов в обозревателе тестов. Щелкните правой кнопкой мыши и выберите Добавить в список воспроизведения>Новый список воспроизведения.
Чтобы открыть список воспроизведения, выберите значок списка воспроизведения на панели инструментов Visual Studio и выберите в меню сохраненный ранее файл списка.
Чтобы изменить список воспроизведения, щелкните правой кнопкой мыши любой тест и воспользуйтесь пунктами меню для его добавления или удаления в списке.
Начиная с Visual Studio 2019 версии 16.7, кнопка Изменить доступна на панели инструментов. Рядом с тестами отобразятся флажки, которые показывают, какие тесты включены в список воспроизведения и исключены из него. Внесите необходимые изменения в группы.
Вы также можете помечать флажком родительские группы в иерархии. Это делает список воспроизведения динамическим, и он будет постоянно обновляться в зависимости от тестов в той или иной группе. Например, если установить флажок напротив класса, то любой добавляемый из этого класса тест будет включаться в список. Если удалить тест из этого класса, он будет удален из списка воспроизведения. Чтобы получить дополнительные сведения о правилах, сохраните список воспроизведения с помощью кнопки "Сохранить" на панели инструментов и откройте файл .playlist, созданный на диске. В этом файле перечислены все правила и отдельные тесты, входящие в список воспроизведения.
Если вы хотите создать список воспроизведения для признаков, используйте для MSTest указанный ниже формат.
<Playlist Version="2.0">
<Rule Name="Includes" Match="Any">
<Property Name="Trait" Value="SchemaUpdateBasic" />
</Rule>
</Playlist>
Для xUnit используйте указанный ниже формат. Убедитесь в наличии пробела между вашим названием TestCategory
и [Value]
.
<Playlist Version="2.0">
<Rule Name="Includes" Match="Any">
<Rule Match="All">
<Property Name="Solution" />
<Rule Match="Any">
<Property Name="Trait" Value="TestCategory [Value]" />
</Rule>
</Rule>
</Rule>
</Playlist>
Вы можете создавать и сохранять список тестов, которые необходимо выполнять или просматривать как группу. При выборе списка воспроизведения тесты в списке отображаются на новой вкладке "Тест Обозреватель". Вы можете добавить тест в несколько списков воспроизведения.
Чтобы создать список воспроизведения, выберите один или несколько тестов в обозревателе тестов. В контекстном меню выберите Добавить в список воспроизведения>Новый список воспроизведения.
Список воспроизведения открывается на новой вкладке "Тест Обозреватель". Этот список воспроизведения можно использовать один раз, а затем отключить его карта или нажать кнопку "Сохранить" на панели инструментов списка воспроизведения, а затем выбрать имя и расположение для сохранения списка воспроизведения.
Чтобы создать список воспроизведения, выберите один или несколько тестов в обозревателе тестов. Щелкните правой кнопкой мыши и выберите Добавить в список воспроизведения>Новый список воспроизведения.
Чтобы открыть список воспроизведения, выберите значок списка воспроизведения на панели инструментов Visual Studio и выберите в меню сохраненный ранее файл списка.
Чтобы изменить список воспроизведения, щелкните правой кнопкой мыши любой тест и воспользуйтесь пунктами меню для его добавления или удаления в списке.
Начиная с Visual Studio 2019 версии 16.7, кнопка Изменить доступна на панели инструментов. Рядом с тестами отобразятся флажки, которые показывают, какие тесты включены в список воспроизведения и исключены из него. Внесите необходимые изменения в группы.
Вы также можете помечать флажком родительские группы в иерархии. Это делает список воспроизведения динамическим, и он будет постоянно обновляться в зависимости от тестов в той или иной группе. Например, если установить флажок напротив класса, то любой добавляемый из этого класса тест будет включаться в список. Если удалить тест из этого класса, он будет удален из списка воспроизведения. Чтобы получить дополнительные сведения о правилах, сохраните список воспроизведения с помощью кнопки "Сохранить" на панели инструментов и откройте файл .playlist, созданный на диске. В этом файле перечислены все правила и отдельные тесты, входящие в список воспроизведения.
Если вы хотите создать список воспроизведения для признаков, используйте для MSTest указанный ниже формат.
<Playlist Version="2.0">
<Rule Name="Includes" Match="Any">
<Property Name="Trait" Value="SchemaUpdateBasic" />
</Rule>
</Playlist>
Для xUnit используйте указанный ниже формат. Убедитесь в наличии пробела между вашим названием TestCategory
и [Value]
.
<Playlist Version="2.0">
<Rule Name="Includes" Match="Any">
<Rule Match="All">
<Property Name="Solution" />
<Rule Match="Any">
<Property Name="Trait" Value="TestCategory [Value]" />
</Rule>
</Rule>
</Rule>
</Playlist>
Столбцы обозревателя тестов
Группы также доступны в качестве столбцов в обозревателе тестов вместе с параметрами "Признак", "Трассировка стека", "Сообщение об ошибке" и "Полное имя". Большинство столбцов не отображаются по умолчанию. Вы можете настроить, какие столбцы отображаются и в каком порядке.
Фильтрация, сортировка и изменение порядка столбцов теста
Можно отфильтровать, отсортировать столбцы и изменить их порядок.
Чтобы выполнить фильтрацию по конкретным признакам, щелкните значок фильтра в верхней части столбца "Признаки".
Чтобы изменить порядок столбцов, щелкните заголовок столбца и перетащите его влево или вправо.
Чтобы отсортировать столбец, щелкните заголовок столбца. Не все столбцы можно отсортировать. Можно также выполнить сортировку по дополнительному столбцу, удерживая клавишу SHIFT и щелкнув дополнительный заголовок столбца.
Столбцы обозревателя тестов
Группы также доступны в качестве столбцов в обозревателе тестов вместе с параметрами "Признак", "Трассировка стека", "Сообщение об ошибке" и "Полное имя". Большинство столбцов не отображаются по умолчанию. Вы можете настроить, какие столбцы отображаются и в каком порядке.
Фильтрация, сортировка и изменение порядка столбцов теста
Можно отфильтровать, отсортировать столбцы и изменить их порядок.
Чтобы выполнить фильтрацию по конкретным признакам, щелкните значок фильтра в верхней части столбца "Признаки".
Чтобы изменить порядок столбцов, щелкните заголовок столбца и перетащите его влево или вправо.
Чтобы отсортировать столбец, щелкните заголовок столбца. Не все столбцы можно отсортировать. Можно также выполнить сортировку по дополнительному столбцу, удерживая клавишу SHIFT и щелкнув дополнительный заголовок столбца.
Поиск и фильтрация списка тестов
Фильтры поиска обозревателя тестов можно также использовать для ограничения методов теста в проектах, которые вы просматриваете и запускаете.
Когда вы вводите строку в поле поиска обозревателя тестов и нажимаете клавишу ВВОД, список тестов фильтруется для отображения только тех тестов, полные имена которых содержат эту строку.
Фильтрация по различным условиям
Откройте раскрывающийся список справа от поля поиска.
Выберите новое условие.
Введите значение фильтра в кавычках. Если требуется найти точное совпадение в строке вместо совпадения, содержащего в себе текст, используйте знак равенства (=) вместо двоеточия (:).
Примечание.
Поиск выполняется без учета регистра и сопоставляет указанную строку с любой частью значения условия.
Квалификатор | Description |
---|---|
Штат | Поиск совпадений в именах категорий обозревателя тестов: Неудачные тесты, Пропущенные тесты, Пройденные тесты. |
Признаки | Поиск категории и значения признака, совпадающих с заданной строкой. Синтаксис для указания категорий и значений признаков определяется платформой модульного тестирования. |
Полное имя | Поиск полных имен пространств имен, классов и методов тестов, совпадающих с заданной строкой. |
Проект | Поиск имен тестовых проектов, совпадающих с заданной строкой. |
Целевая рабочая среда | Выполняет поиск тестовых платформ для совпадений. |
Пространство имен | Поиск имен тестовых пространств имен, совпадающих с заданной строкой. |
Class | Поиск имен тестовых классов, совпадающих с заданной строкой. |
Чтобы исключить подмножество результатов фильтра, используйте следующий синтаксис.
FilterName:"Criteria" -FilterName:"SubsetCriteria"
Например, FullName:"MyClass" - FullName:"PerfTest"
возвращает все тесты, имена которых включают MyClass, за исключением тестов с именами, включающими PerfTest.
Анализ покрытия кода модульного теста
Можно определить количество кода продукта, который действительно был проверен модульным тестированием, при помощи средства покрытия кода Visual Studio, доступного в выпуске Visual Studio Enterprise. Можно запустить покрытие кода на выбранных тестах или на всех тестах решения.
Для запуска покрытия кода для методов теста в решении
- Щелкните правой кнопкой мыши в обозревателе тестов и выберите Анализ покрытия кода для выбранных тестов.
Окно результатов объема протестированного кода отображает процент блоков кода продукта, которые были задействованы по строке, функции, классу, пространству имен и модулю.
Дополнительные сведения см. в статье Использование параметра объема протестированного кода для определения объема протестированного кода.
Сочетания клавиш для управления тестами
Чтобы запустить тест из обозревателя тестов, щелкните тест правой кнопкой мыши в редакторе кода и выберите Запустить тест. Кроме того, для этого можно использовать установленные по умолчанию сочетания клавиш обозревателя тестов в Visual Studio. Некоторые сочетания клавиш зависят от контекста. Это означает, что они выполняют, отлаживать или профилировать тесты на основе того, где курсор находится в редакторе кода. Если курсор находится внутри метода теста, этот метод запускается. Если курсор находится на уровне класса, запускаются все тесты в этом классе. Аналогичным образом реализуется поведение на уровне пространства имен.
Часто используемые команды | Сочетания клавиш |
---|---|
TestExplorer.DebugAllTestsInContext | CTRL+R, CTRL+T |
TestExplorer.RunAllTestsInContext | CTRL+R, T |
TestExplorer.RunAllTests | CTRL+R, A |
TestExplorer.RepeatLastRun | CTRL+R, L |
Примечание.
Тест нельзя запускать в абстрактном классе, поскольку в абстрактных классах тесты только определяются и для них не создаются экземпляры. Чтобы запустить тест в абстрактном классе, создайте класс, который будет производным от нужного абстрактного класса.
Звуковая подсказка для тестов
Обозреватель тестов может воспроизводить звуковой сигнал при завершении тестового запуска. Имеются два звука: один свидетельствует об успешном прохождении всех тестов, а другой — о том, что как минимум один из них в тестовом запуске не пройден. Вы можете настроить эти звуки в диалоговом окне звуков Windows 11 по умолчанию. Данная функция впервые доступна в Visual Studio 2019 с обновлением 16.9, предварительная версия 3.
- Откройте диалоговое окно звуков Windows 11 по умолчанию.
- Перейдите на вкладку Звуки.
- Найдите категорию Microsoft Visual Studio. Выберите для звуков Тестовый запуск выполнен или Тестовый запуск не пройден либо заранее установленный, либо ваш собственный звуковой файл.