Невозможно создать отчет о покрытии кода с помощью ReportGenerator - PullRequest
0 голосов
/ 04 февраля 2020

Я создал конвейер сборки в Azure DevOps для одного из моих ASP. NET MVC приложений. Существуют проекты для модульного тестирования, и мне нужно сгенерировать отчет о покрытии кода, для которого я использовал пакет NuGet coverlet.msbuild и «ReportGenerator».

Ниже приведен файл packages.config одного из проектов модульного тестирования:

<packages>
  <package id="coverlet.msbuild" version="2.8.0" targetFramework="net461" developmentDependency="true" />
  <package id="NUnit" version="2.6.3" targetFramework="net45" />
  <package id="ReportGenerator" version="4.4.6" targetFramework="net461" />
</packages>

Кроме того, вы можете найти список решений Build, тестовых сборок и ReportGenerator в конвейере сборки:

Построение решения:

steps:
- task: VSBuild@1
  displayName: 'Build solution **\SmartStoreNET.sln'
  inputs:
    solution: '**\SmartStoreNET.sln'
    msbuildArgs: '/p:CollectCoverage=true /p:CoverletOutputFormat=cobertura'

Испытательные сборки

steps:
- task: VSTest@2
  displayName: 'Test Assemblies'
  inputs:
    testAssemblyVer2: |
     **\$(BuildConfiguration)\*test*.dll
     !**\obj\**
    codeCoverageEnabled: true
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'

Генератор отчетов

steps:
- task: Palmmedia.reportgenerator.reportgenerator-build-release-task.reportgenerator@4
  displayName: ReportGenerator
  inputs:
    reports: '$(Build.SourcesDirectory)/tests/**/coverage.cobertura.xml'
    targetdir: '$(Build.SourcesDirectory)/CodeCoverage'
    reporttypes: 'HtmlInline_AzurePipelines;Cobertura;Badges'

При выполнении конвейера я получаю следующую ошибку в задаче ReportGenerator:

Шаблон файла отчета 'd: \ a \ 1 \ s / tests / ** / покрытие. cobertura. xml 'недействительно. Подходящих файлов не найдено.

Может кто-нибудь подсказать, что здесь отсутствует, или что может быть потенциальной проблемой.

Любая помощь по этому вопросу будет принята с благодарностью.

Спасибо,

Нирман

1 Ответ

0 голосов
/ 05 февраля 2020

Невозможно создать отчет о покрытии кода с помощью ReportGenerator

AFAIK, свойства /p:CollectCoverage=true и /p:CoverletOutputFormat=cobertura используются для тестовой задачи, чтобы сгенерировать результаты покрытия, а не для задачи построения.

Но есть проблема для , чтобы запускать покрывало с помощью задачи теста Visual Studio , поэтому мы не могли напрямую использовать вышеуказанные свойства для задачи тестирования VS.

В качестве обходного пути вы можете попытаться установить инструмент во время конвейера, а затем сгенерировать отчет с помощью сценариев powershell:

dotnet tool install dotnet-reportgenerator --tool-path . --version 4.0.12
dotnet tool install coverlet.console --tool-path . --version 1.4.1
mkdir .\reports
$unitTestFile = gci -Recurse | ?{ $_.FullName -like "*bin\*test*.dll" }
$coverlet = "$pwd\coverlet.exe"
& $coverlet $unitTestFile.FullName --target "dotnet" --targetargs "vstest $($unitTestFile.FullName) --logger:trx" --format "cobertura"
gci -Recurse |
?{ $_.Name -eq "coverage.cobertura.xml"} |
%{ &"$pwd\reportgenerator.exe" "-reports:$($_.FullName)" "-targetdir:reports" "-reportstypes:HTMLInline;HTMLChart" }

Проверьте этот поток и документ для более подробной информации.

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

...