Как объединить два или более файлов покрытия тестового кода dotnet

У меня есть решение.Net с двумя библиотеками базовых классов dotnet и соответствующими проектами модульного тестирования.

Когда я бегу dotnet test **\*.Tests.csproj --collect "Code Coverage" Затем команда создает отдельные файлы.coveragexml для каждого проекта модульного тестирования.

Мое требование - объединить все файлы.coveragexml в один файл и использовать его, чтобы получить общую матрицу покрытия для всего решения.

Есть ли какой-нибудь инструмент или скрипт для этого?

Замечания:

2 ответа

Для этого существует инструмент dotnet под названием dotnet-coverage .

Установите на машину (или на сервер сборки, если это для вашего конвейера):

      dotnet tool install --global dotnet-coverage

Создайте освещение с помощью предпочитаемых вами инструментов, а затем вы сможете использоватьdotnet-coverageобъединить их все в один файл.

Тестовые файлы dotnet (.coverage):

      dotnet-coverage merge *.coverage --recursive --output merged.coverage

XML-файлы покрытия dotnet test (.xml):

      dotnet coverage merge *.xml --recursive --output coverage.xml --output-format xml

Покрывало (.cobertura.xml) :

      dotnet-coverage merge *.cobertura.xml --recursive --output merged.cobertura.xml --output-format cobertura

Использование в конвейере

Чтобы использовать его в конвейере Azure DevOps, настройте свой шаг следующим образом (это для Coverlet, но его можно легко настроить):

      steps:
- task: DotNetCoreCLI@2
  displayName: 'dotnet custom'
  inputs:
    command: custom
    custom: coverage
    arguments: 'merge *.coverage.xml --recursive --output MergedCoverage.cobertura.xml --output-format xml'

А затем опубликуйте объединенный отчет о покрытии:

      steps:
- task: PublishCodeCoverageResults@1
  displayName: 'Publish code coverage from MergedCoverage.cobertura.xml'
  inputs:
    codeCoverageTool: Cobertura
    summaryFileLocation: MergedCoverage.cobertura.xml

Если нет необходимости, чтобы результат слияния все еще был в формате .coveragexml, вы можете использовать ReportGenerator (https://github.com/danielpalme/ReportGenerator) в качестве инструмента слияния.

Другие вопросы по тегам