Как объединить два или более файлов покрытия тестового кода dotnet
У меня есть решение.Net с двумя библиотеками базовых классов dotnet и соответствующими проектами модульного тестирования.
Когда я бегу dotnet test **\*.Tests.csproj --collect "Code Coverage"
Затем команда создает отдельные файлы.coveragexml для каждого проекта модульного тестирования.
Мое требование - объединить все файлы.coveragexml в один файл и использовать его, чтобы получить общую матрицу покрытия для всего решения.
Есть ли какой-нибудь инструмент или скрипт для этого?
Замечания:
- Я не использую Coverlet.
- Я использую встроенный vstest.console.exe для запуска тестов и создания файла.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) в качестве инструмента слияния.