Эта статья переведена вручную. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
|
Перевод
Текст оригинала
|
Использование покрытия кода для определения объема протестированного кода

Требования
-
Visual Studio Ultimate, Visual Studio Premium
Анализ покрытия кода в модульных тестах в обозревателе тестов
-
В меню Тест щелкните Анализ покрытия кода. -
Чтобы просмотреть, какие строки были выполнены, щелкните Цвета отображения покрытия кода. Чтобы изменить цвета или использовать полужирный шрифт, последовательно щелкните Сервис, Параметры, Среда, Шрифты и цвета, Параметры для, Текстовый редактор. В разделе Отображаемые элементы настройте элементы покрытия. -
Если результаты показывают низкое покрытие, проверьте, какие части кода не обрабатываются, и напишите несколько дополнительных тестов для их покрытия. Команды разработчиков обычно стремятся покрыть около 80 % кода. В некоторых случаях допустимо более низкое покрытие. Например, более низкое покрытие допустимо, когда некоторый код создается из стандартного шаблона.
![]() |
---|
|
-
Чтобы просмотреть предыдущий набор результатов, выберите его в раскрывающемся меню. В меню отображается временный список, который очищается при открытии нового решения. -
Чтобы просмотреть результаты предыдущего сеанса, щелкните Импортировать результаты покрытия кода, перейдите к папке TestResults в своем решении и импортируйте COVERAGE-файл. Цвета отображения покрытия могут быть неверными, если исходный код был изменен с момента создания COVERAGE-файла. -
Чтобы представить результаты в виде текста, щелкните Экспортировать результаты покрытия кода. Это приведет к созданию доступного для чтения COVERAGEXML-файла, который можно обработать другими средствами или легко отправить по почте. -
Чтобы отправить результаты другому пользователю, отправьте COVERAGE-файл или экспортированный COVERAGEXML-файл. Получатели могут затем импортировать файл. Если у них та же версия исходного кода, то они смогут увидеть цвета отображения покрытия.
Ограничения объединения
-
При объединении данных покрытия из различных версий кода результаты отображаются отдельно, но они не объединяются. Чтобы получить полностью объединенные результаты, используйте одну ту же сборку кода и изменяйте только данные теста. -
При объединении файла результатов, который был экспортирован, а затем импортирован, результаты можно просматривать только по строкам, но не по блокам. Используйте команду Добавить или удалить столбцы для отображения данных по строкам. -
При объединении результатов тестов проекта ASP.NET результаты отдельных тестов будут отображаться, но не объединяться. Это относится только к самим артефактам ASP.NET: результаты всех других сборок будут объединяться.
using System.Diagnostics.CodeAnalysis; ... public class ExampleClass1 { [ExcludeFromCodeCoverage] void ExampleMethod() {...} [ExcludeFromCodeCoverage] // exclude property int ExampleProperty1 { get {...} set{...}} int ExampleProperty2 { get { ... } [ExcludeFromCodeCoverage] // exclude setter set { ... } } } [ExcludeFromCodeCoverage] class ExampleClass2 { ... }
Исключение элементов в машинном коде C++
#include <CodeCoverage\CodeCoverage.h> ... // Exclusions must be compiled as unmanaged (native): #pragma managed(push, off) // Exclude a particular function: ExcludeFromCodeCoverage(Exclusion1, L"MyNamespace::MyClass::MyFunction"); // Exclude all the functions in a particular class: ExcludeFromCodeCoverage(Exclusion2, L"MyNamespace::MyClass2::*"); // Exclude all the functions generated from a particular template: ExcludeFromCodeCoverage(Exclusion3, L"*::MyFunction<*>"); // Exclude all the code from a particular .cpp file: ExcludeSourceFromCodeCoverage(Exclusion4, L"*\\unittest1.cpp"); // After setting exclusions, restore the previous managed/unmanaged state: #pragma managed(pop)
ExclusionName — любое уникальное имя. FunctionName — полное имя функции. Оно может содержать знаки подстановки. Например, чтобы исключить все функции класса, напишите MyNamespace::MyClass::* SourceFilePath — локальный путь или путь UNC к CPP-файлу. Оно может содержать знаки подстановки. В следующем примере исключаются все файлы из определенного каталога: \\MyComputer\Source\UnitTests\*.cpp #include <CodeCoverage\CodeCoverage.h>
Поместите вызовы макроса исключения в глобальное пространство имен, а не внутри любого пространства имен или класса. Исключения можно поместить в файл кода модульного теста или в файл кода приложения. Исключения должны компилироваться как неуправляемый (машинный) код с помощью настройки параметра компилятора или с помощью #pragma managed(off).
![]() |
---|
Включение или исключение дополнительных элементов
-
В Team Explorer откройте меню Сборки, а затем добавьте или измените определение сборки. -
На странице Процесс разверните Автоматизированные тесты, Исходный код теста, Параметры запуска. Задайте для параметра Тип файла параметров запуска значение Покрытие кода включено. При наличии нескольких определений исходного кода теста повторите этот шаг для каждого из них. -
Однако не существует поля с именем Тип файла параметров запуска. В разделе Автоматизированные тесты щелкните Тестовая сборка и нажмите кнопку с многоточием [...] в конце строки. В диалоговом окне Добавить/изменить тестовый запуск в разделе Средство выполнения тестов щелкните Средство выполнения тестов Visual Studio.
-

-
Запустите командную строку разработчика Visual Studio. В меню Пуск Windows последовательно щелкните Все программы, Microsoft Visual Studio, Инструменты Visual Studio, Командная строка разработчика. -
Выполните следующий файл. vstest.console.exe MyTestAssembly.dll /EnableCodeCoverage