Как измерить покрытие кода в ASP.NET основные проекты в Visual Studio?
Я хочу измерить охват кода моих XUnit-тестов в ASP.NET основное приложение. Инструментарий для .NET Core в Visual Studio 2015-это preview 2, и покрытие кода пока не работает.
сообщение в блогеhttp://dotnetthoughts.net/measuring-code-coverage-of-aspnet-core-applications-using-opencover/ с февраля показывает обходной путь с помощью командной строки open cover. Я ищу более интегрированный способ внутри Visual Studio.
кто-нибудь слышал о лучшем / более интегрированном способе измерения покрытия кода в сочетании с XUnit ?
6 ответов
добавить пакета NuGet Microsoft.CodeCoverage 1.0.1 на project.json
.
Я работаю над шаблоном для Asp.NET
и прямо сейчас я работаю над модульными тестами, поэтому я видел ваш пост. Вы можете увидеть project / configuration здесь.
отказ от ответственности: эти шаги были даны из измерение ASP.NET покрытие ядра с помощью OpenCover-DotNetThoughts.
несмотря на то, что плакат говорит об этом сайте, я подумал, что все равно было бы лучше иметь эти шаги здесь для процветания.
Примечание: эти инструкции, адаптированные к операционной системе windows, должны легко работать для любых O / S, поддерживаемых OpenCover и ReportGenerator.
- создать твой ASP.NET основной сайт MVC
- обеспечить глобальную.json имеет "тест" в проектах
- щелкните правой кнопкой мыши тестовую папку в решении и добавьте новый проект
- убедитесь, что тип проекта является библиотекой классов .NET Core
- добавьте в свой проект следующее.узел зависимостей json:
- "dotnet-test-xunit": "2.2.0-preview2-build1029",
- "в xUnit": "2.2.0-beta3 в-build3402"
- " Microsoft.CodeCoverage": "1.0.2"
- добавьте в свой проект следующее.в JSON по версии
- "testRunner": "xunit",
- напишите модульные тесты
- скачать OpenCover и Генератор Отчетов
- Установить OpenCover
- извлечь генератор отчетов в OpenCover установить dir в папке под названием генератор отчетов
- создайте файл BAT в своем проекте и вызовите его покрытие.летучая мышь!--16-->
- добавить следующее содержание:
@echo off
SET dotnet="C:\Program Files\dotnet\dotnet.exe"
SET opencover="C:\Program Files (x86)\OpenCover\OpenCover.Console.exe"
SET reportgenerator="C:\Program Files (x86)\OpenCover\ReportGenerator\ReportGenerator.exe"
SET targetargs="test"
SET filter="+[*]NAMESPACE.* -[*.Test]* -[xunit.*]* -[FluentValidation]*"
SET coveragefile=Coverage.xml
SET coveragedir=Coverage
REM Run code coverage analysis
%opencover% -oldStyle -register:user -target:%dotnet% -output:%coveragefile% -targetargs:%targetargs% -filter:%filter% -skipautoprops -hideskipped:All
REM Generate the report
%reportgenerator% -targetdir:%coveragedir% -reporttypes:Html;Badges -reports:%coveragefile% -verbosity:Error
REM Open the report
start "report" "%coveragedir%\index.htm"
- замените пространство имен пространством имен проектов.
- если несколько проектов, дублируйте регулярное выражение
+[*]NAMESPACE.*
столько раз, сколько необходимо для каждого пространства имен - сохраните файл
- Откройте командную строку и убедитесь, что в тестовом проекте
- введите обложку, чтобы запустить модульные тесты и результаты покрытия в формате HTML или что угодно назвал ваш файл bat на шаге 11.
codecoverage работает для меня, для .Net Core с помощью Microsoft.CodeCoverage
Как уже упоминалось выше.
Проверьте Microsoft.CodeCoverage
nuget добавлен в ваш тестовый проект
также проверьте проект.JSON-файл в главном проекте, атрибут debugType должен быть " полным "вместо"portable"
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true,
"debugType": "full"
},
исправлено для меня
покрывало (https://github.com/tonerdo/coverlet) это новый проект, который недавно появился. Он работает вместе с msbuild и дает прямое решение для покрытия
Я просто попытался для ReSharper версия 2016.3 ВП 4 (улучшения). Кроме выполнения модульного теста теперь dotCover возвращает информацию о покрытии кода для моих тестовых проектов .net core.
OpenCover+ReportGenerator. Установите как пакеты NUGET в один из ваших тестовых проектов (один раз, потому что они просто должны появиться в папке пакета).
тогда вы можете поставить этот powershel https://github.com/rpokrovskij/opencover4vs.ps1 в папку решения и настройте ее с помощью тестовых проектов, используя глобирование пути, например
$TestProjectsGlobbing = @(,'*.Тест.csproj')
тогда вы можете запустить его как обычный Powershel скрипт. Результат должен появиться в папке решения в \TestsResults\report\index.HTML-код