просмотреть отчет о покрытии кода на портале Azure Devops - PullRequest
0 голосов
/ 11 февраля 2019

Я выполняю тесты NUnit (проект в .Net Framework 4.5) в рамках конвейера сборки Azure Devops.

- task: VSTest@2
  inputs:
    testAssemblyVer2: 'tests/**/*.Tests.dll'
    pathtoCustomTestAdapters: '$(Build.SourcesDirectory)/packages'
    codeCoverageEnabled: true
  displayName: 'NUnit Testing'

- task: PublishCodeCoverageResults@1
  inputs:
    codeCoverageTool: JaCoCo
    summaryFileLocation: '$(Common.TestResultsDirectory)/**/*.xml'
  displayName: 'Publish Code Coverage'
  //        summaryFileLocation: '$(Common.TestResultsDirectory)/**/*.coverage'

Но я не могу увидеть отчет о покрытии, все, что я вижуссылка для загрузки результатов покрытия ...

code coverage download link

Как преобразовать отчет .coverage в формат JaCoCo?ИЛИ генерировать отчет напрямую в формате JaCoCo?

Я видел какое-то решение для .Net Core ( ссылка ), но не для .Net framework

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Вы можете использовать задачу «Опубликовать результаты покрытия кода» в конвейере Azure Devops, чтобы увидеть результат покрытия кода в формате Jacoco.

Для получения дополнительной информации о настройке и конфигурации, пожалуйста, проверьте блог в MSDN

https://docs.microsoft.com/hi-in/azure/devops/pipelines/tasks/test/publish-code-coverage-results?view=tfs-2015#q--a

Надеюсь, это поможет.

0 голосов
/ 18 февраля 2019

Обновление:

Согласно выпуску для Azure Devops для Sprint 150

При публикации отчетов о покрытии кода вам больше не нужно указывать файлы HTML.

Таким образом, сценарию на моем рисунке больше не нужно использовать инструмент генератора отчетов непосредственно для создания отчета html, а при публикации результатов покрытия каталог, содержащий эти отчеты html, не нужен.Указать.

Редактировать:


Уловка, которую я нашел для получения результатов покрытия из проекта .Net Framework для отображения в Покрытии кода вкладка находится в том же направлении, что и ваша связанная статья .

  1. Не запускать тесты с тестовой задачей VS в Azure
  2. Установить генератор отчетов и Coverlet инструменты непосредственно
  3. Использование dotnet-vstest команда для запуска тестов через Coverlet
  4. Публикация отчетов, созданных с помощью Генератор отчетов и Cobertura Результаты покрытия формата


Не использовать тест VSЗадача

Выполнение этой задачи позволит вам собирать покрытие с помощью простого флажка, но затем вы откажетесь от возможности предоставить содержимое для вкладки Code Coverage

no VsTest task



Установка инструментов непосредственно

Используйте задачу 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"


Публикация результатов

use publish code coverage task



Полный пример сценария

примечание: этот сценарий довольно грубый, поэтому используйте его как упражнение на размышление для вашей индивидуальной ситуации.

"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 вызовов, которые я делал.



Результаты !!

... потому что это действительно важно

enter image description here



enter image description here




Оригинальный ответ:


Из-за упомянутой вами ссылкиУстановка и использование глобального инструмента генератора отчетов. Я думаю, что вы по-прежнему можете следовать этим рекомендациям для создания встроенных HTML-отчетов и типов диаграмм.

Я не уверен, что имеется в виду и как это работает, когда в статье говорится:

Дело в том, что типы отчетов: используйте HTMLInLine для включения вывода на странице DevOps Azure. Страница покрытия Azure DevOps показывает index.html в Интернете.

Я понимаю, что вы можете использовать этот инструмент для создания отчета HTML из .xml результаты покрытия, а затем опубликуйте результаты покрытия и составьте отчет вместе с задачей Publish Code Coverage.

Так что, похоже, все, что вам нужно, это иметь .xml формат инструмента .coverage .

У меня не получилось, чтобы он работал в простой PowerShell, но вы могли следовать инструкциям из документации Генератор отчетов , чтобы написать утилиту C # для доступа к библиотеке Coverage.Analysis.

...