Обновление:
Согласно выпуску для Azure Devops для Sprint 150
При публикации отчетов о покрытии кода вам больше не нужно указывать файлы HTML.
Таким образом, сценарию на моем рисунке больше не нужно использовать инструмент генератора отчетов непосредственно для создания отчета html, а при публикации результатов покрытия каталог, содержащий эти отчеты html, не нужен.Указать.
Редактировать:
Уловка, которую я нашел для получения результатов покрытия из проекта .Net Framework для отображения в Покрытии кода вкладка находится в том же направлении, что и ваша связанная статья .
- Не запускать тесты с тестовой задачей VS в Azure
- Установить генератор отчетов и Coverlet инструменты непосредственно
- Использование dotnet-vstest команда для запуска тестов через Coverlet
- Публикация отчетов, созданных с помощью Генератор отчетов и Cobertura Результаты покрытия формата
Не использовать тест VSЗадача
Выполнение этой задачи позволит вам собирать покрытие с помощью простого флажка, но затем вы откажетесь от возможности предоставить содержимое для вкладки Code Coverage
Установка инструментов непосредственно
Используйте задачу Powershell (или аналогичную) для установки Coverlet и Генератор отчетов инструментов напрямую.Это позволяет вам использовать их в проектах, которые не .Net Core .
"install tools:"
&dotnet tool install dotnet-reportgenerator-globaltool --tool-path . --version 4.0.12
&dotnet tool install coverlet.console --tool-path . --version 1.4.1
Использовать dotnet vstest через coverlet
Это мое пониманиечто dotnet test
не подходит для .Net Framework проектов / сборок.Тем не менее, мы все еще можем использовать команду dotnet
, которая, как мы знаем, будет на машине агента, но нам нужно использовать ее как механизм для доступа к vstest.console.exe .
Инструмент Coverlet , как упомянуто в статье, которую вы связали, будет выводить результаты покрытия в формате Cobertura , если вы скажете это сделать.
&$coverlet $unitTestFile.FullName --target "dotnet" --targetargs "vstest $($unitTestFile.FullName) --logger:trx" --format "cobertura"
Публикация результатов
Полный пример сценария
примечание: этот сценарий довольно грубый, поэтому используйте его как упражнение на размышление для вашей индивидуальной ситуации.
"install tools:"
&dotnet tool install dotnet-reportgenerator-globaltool --tool-path . --version 4.0.12
&dotnet tool install coverlet.console --tool-path . --version 1.4.1
"`nmake reports dir:"
mkdir .\reports
"`nrun tests:"
$unitTestFile = gci -Recurse | ?{ $_.FullName -like "*bin\*UnitTestProject2.dll" }
Write-Host "`$unitTestFile value: $unitTestFile"
$coverlet = "$pwd\coverlet.exe"
"calling $coverlet for $($unitTestFile.FullName)"
&$coverlet $unitTestFile.FullName --target "dotnet" --targetargs "vstest $($unitTestFile.FullName) --logger:trx" --format "cobertura"
"`ngenerate report(s)"
gci -Recurse |
?{ $_.Name -eq "coverage.cobertura.xml" } |
%{ &"$pwd\reportgenerator.exe" "-reports:$($_.FullName)" "-targetdir:reports" "-reporttypes:HTMLInline;HTMLChart" }
Если вы изо всех сил пытаетесь выяснить, как избежатькавычки и т. д. с помощью команды Coverlet , ВЫ НЕ ОДИН ИЗ .Я использовал echoargs
командлет из PSCX больше раз, чем мне хотелось бы признать, чтобы я мог видеть, что на самом деле было предоставлено для .exe
вызовов, которые я делал.
Результаты !!
... потому что это действительно важно
Оригинальный ответ:
Из-за упомянутой вами ссылкиУстановка и использование глобального инструмента генератора отчетов. Я думаю, что вы по-прежнему можете следовать этим рекомендациям для создания встроенных HTML-отчетов и типов диаграмм.
Я не уверен, что имеется в виду и как это работает, когда в статье говорится:
Дело в том, что типы отчетов: используйте HTMLInLine для включения вывода на странице DevOps Azure. Страница покрытия Azure DevOps показывает index.html в Интернете.
Я понимаю, что вы можете использовать этот инструмент для создания отчета HTML из .xml результаты покрытия, а затем опубликуйте результаты покрытия и составьте отчет вместе с задачей Publish Code Coverage
.
Так что, похоже, все, что вам нужно, это иметь .xml формат инструмента .coverage .
У меня не получилось, чтобы он работал в простой PowerShell, но вы могли следовать инструкциям из документации Генератор отчетов , чтобы написать утилиту C # для доступа к библиотеке Coverage.Analysis
.