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


Покрытие кода

Подсказка

При использовании Microsoft.Testing.Platform.MSBuild (включается транзитивно msTest, NUnit и xUnit runners), расширения покрытия кода регистрируются автоматически при установке пакетов NuGet — изменения кода не требуются.

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

Покрытие кода Майкрософт

Анализ покрытия кода Microsoft возможен как для управляемого (CLR), так и неуправляемого (нативного) кода. Поддерживается статическое и динамическое инструментирование. Для этого расширения требуется пакет NuGet Microsoft.Testing.Extensions.CodeCoverage .

Замечание

Покрытие кода неуправляемого (нативного) типа в расширении по умолчанию отключено. При необходимости активируйте флаги EnableStaticNativeInstrumentation и EnableDynamicNativeInstrumentation. Дополнительные сведения о покрытии кода для неуправляемых программ см. в статическом и динамическом собственном инструментировании.

Это важно

Пакет поставляется с библиотекой Microsoft .NET с закрытым исходным кодом и моделью лицензирования, свободной для использования.

Дополнительные сведения о охвате кода Майкрософт см. на странице GitHub.

Options

Опция Description
--coverage Соберите данные о покрытии кода с помощью инструмента dotnet-coverage.
--coverage-output Имя или путь создаваемого файла покрытия. По умолчанию файл имеет значение TestResults/<guid>.coverage.
--coverage-output-format Формат выходного файла. Поддерживаемые значения: coverage, xmlи cobertura. По умолчанию — coverage.
--coverage-settings параметры покрытия XML-кода.

Дополнительные сведения о доступных параметрах см. в разделе settings и samples.

Замечание

Значение по умолчанию для IncludeTestAssembly в Microsoft.Testing.Extensions.CodeCoverage - это false, тогда как в VSTest по умолчанию это было true. Это означает, что тестовые проекты исключаются по умолчанию. Дополнительные сведения см. в разделе Code Coverage configuration.

Совместимость версий

В следующей таблице показана совместимость различных версий Microsoft.Testing.Extensions.CodeCoverage и Microsoft.Testing.Platform:

Microsoft.Testing.Extensions.CodeCoverage Microsoft.Testing.Platform
18.1.x 2.0.x
18.0.x 1.8.x
17.14.x 1.6.2

Замечание

Для обеспечения оптимальной совместимости и новейших функций рекомендуется использовать последние версии обоих пакетов вместе.

Покрывало

Интеграция c Coverlet Microsoft Testing Platform (coverlet.MTP) — это нативное расширение для Microsoft.Testing.Platform, реализующее coverlet.collector функциональность.

Добавьте пакет NuGet coverlet.MTP в тестовый проект:

dotnet add package coverlet.MTP

Чтобы собрать покрытие кода, выполните тесты с флагом --coverlet :

dotnet test --coverlet

Или запустите тестовый исполняемый файл с флагом --coverlet :

dotnet exec <test-assembly.dll> --coverlet

После тестового coverage.json запуска файл, содержащий результаты, создается в текущем каталоге.

Options

Опция Description
--coverlet Включите сбор данных покрытия кода.
--coverlet-output-format <format> Форматы выходных данных для отчета о охвате. Поддерживаемые форматы: json, , lcovopencover, coberturaи teamcity. Укажите несколько раз, чтобы включить несколько форматов.
--coverlet-include <filter> Включите сборки, соответствующие фильтрам, например [Assembly]Type. Укажите несколько раз, чтобы добавить дополнительные фильтры.
--coverlet-include-directory <path> Включите дополнительные каталоги для исходных файлов. Укажите несколько раз, чтобы добавить больше каталогов.
--coverlet-exclude <filter> Исключите сборки, соответствующие фильтрам, например [Assembly]Type. Укажите несколько раз, чтобы добавить дополнительные фильтры.
--coverlet-exclude-by-file <pattern> Исключите исходные файлы, соответствующие шаблонам глобов. Укажите несколько раз, чтобы добавить дополнительные шаблоны.
--coverlet-exclude-by-attribute <attribute> Исключите методы или классы, украшенные определенными атрибутами. Укажите несколько раз, чтобы добавить больше атрибутов.
--coverlet-include-test-assembly Включите тестовую сборку в отчет о охвате.
--coverlet-single-hit Ограничьте количество попаданий до одного на каждое расположение в коде.
--coverlet-skip-auto-props Пропустить автоматически реализованные свойства в охвате.
--coverlet-does-not-return-attribute <attribute> Атрибуты, которые помечают методы как не возвращаемые. Укажите несколько раз, чтобы добавить больше атрибутов.
--coverlet-exclude-assemblies-without-sources <value> Исключите сборки без исходного кода. Значения: MissingAll, MissingAnyи None.

Дополнительные сведения см. в документации по coverlet.MTP.