Покрытие кода проектов .net core visual studio 2017
Я использую Visual Studio Enterprise 2017 для разработки моих проектов .net core.
в моем решении также есть несколько проектов модульного тестирования, и я хочу просмотреть текущий охват кода.
когда я нажал тест - > анализ покрытия кода - > все тесты. Все мои модульные тесты выполнялись, но в результатах покрытия кода сообщалось только о покрытии кода для моих проектов модульных тестов, что для меня не имеет никакого смысла.
Вопрос 1: вы, ребята, испытываете ту же проблему со мной? Любое решение для этого? Мне также нужно настроить определение сборки в VSTS для отчета о покрытии кода.
Вопрос 2: также, когда я щелкнул Правой Кнопкой Мыши, чтобы отладить 1 моего модульного теста. Он выполняет все мои модульные тесты. Является ли это ошибка в VS2017?
Update1: я нашел эту тему:https://github.com/Microsoft/vstest/issues/597
6 ответов
даже с "фиксированной" версией у меня были проблемы (только возможность видеть покрытие кода для тестовых проектов, а не фактические проекты, которые я тестировал). Чтобы обойти проблему, я удалил <DebugType>Full</DebugType>
из тестового проекта.
Итак, в качестве резюме:
добавить пакет Microsoft.CodeCoverage (1.0.3) в ваш тестовый проект.
добавить
<DebugType>Full</DebugType>
тег .файл csproj on проекты, которые мы хотим видеть покрытие кода значения (внутри<PropertyGroup>
Как пояснили на vstest GitHub link).- выполнить модульные тесты.
- в" Проводнике тестов "выберите пройденные модульные тесты, щелкните правой кнопкой мыши - > "анализ покрытия кода для выбранных тестов".
- вы должны увидеть покрытие кода для ваших сборок.
моя настройка (минимальная настройка?)
- xunit (2.3.1)
- в xUnit.бегун.visualstudio (2.3.1)
- Microsoft.Сеть.Тест.Sdk (15.3.0)
- Microsoft.CodeCoverage (1.0.3)
- Visual Studio Enterprise 2017 (15.4.1)
вы можете попробовать dotCover от Jetbrains. https://www.jetbrains.com/dotcover/features/
dotCover-это средство модульного тестирования и покрытия кода .NET, которое работает прямо в Visual Studio, помогает узнать, в какой степени ваш код покрыт модульными тестами, предоставляет отличные способы визуализации покрытия кода и является непрерывной интеграцией. dotCover вычисляет и сообщает покрытие кода уровня инструкции в приложениях, ориентированных на .NET Framework, Silverlight, и .NET Core.
Он отлично работает с .NET Core и может отображать покрытие кода.
поддерживает несколько фреймворков модульного тестирования, а именно MSTest, NUnit, xUnit (все из коробки) и MSpec (через плагин).
на основе этой статьи (покрытие кода не работает в среде IDE с netcoreapp1.x проекты (VS 2017 RTM):
покрытие кода в настоящее время не реализовано для проектов netcore. Этот работа над этим вопросом продолжается, она придет в рамках post RTW выпуск.
похоже, что они все еще разрабатывают биты инфраструктуры (сборщиков данных) перед выпуском. Они предположительно близки.
эта проблема была исправлена в версии 15.3:
https://github.com/Microsoft/vstest-docs/blob/master/docs/analyze.md#coverage
ответ JDC помог мне включить мои фактические проекты, но я не мог избавиться от тестовых проектов в отчете о покрытии. Мне удалось это, добавив " CodeCoverage.runsettings " в моем тестовом проекте XUnit со следующим содержимым:
<?xml version="1.0" encoding="utf-8"?>
<!-- File name extension must be .runsettings -->
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Configuration>
<CodeCoverage>
<ModulePaths>
<Exclude>
<ModulePath>.*\.Tests.dll$</ModulePath>
<!-- Add more ModulePath nodes here. -->
</Exclude>
</ModulePaths>
</CodeCoverage>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>
важной частью здесь является исключение тестового проекта в разделе ModulePaths.