Dotnet Unit test с Coverlet - Как получить покрытие для всего решения, а не только для проекта - PullRequest
0 голосов
/ 12 ноября 2018

Мы используем покрытия (https://github.com/tonerdo/coverlet) для измерения покрытия кода модульных тестов в решении .NET, содержащем несколько проектов. Результаты отображаются отдельно для каждого проекта в решении. Мы хотим получить консолидированную информациюрезультат для всего решения. Может ли кто-нибудь предложить лучший способ получить это? Если по какой-либо причине это не возможно с помощью coverlet, можете ли вы предложить какой-либо альтернативный инструмент с открытым исходным кодом, который может сделать это с помощью CLI. По сути, нам нужно интегрировать его сИнструмент CI, который должен предупреждать, если охват ниже порога.

1 Ответ

0 голосов
/ 23 мая 2019

Так мы генерируем покрытие кода для всего решения, используя coverlet.msbuild.

  1. Ссылка coverlet.msbuild в каждом тестовом проекте в вашем решении.
  2. В вашем CIСценарий, перейдите в каталог, содержащий файл вашего решения.Затем
  3. Запустите команду, подобную следующей (синтаксис bash)
dotnet test ##solution_filename## --logger:trx --results-directory ../TestResults \
   "/p:CollectCoverage=true" \
   "/p:CoverletOutput=../TestResults/" \
   "/p:MergeWith=../TestResults/coverlet.json" \
   "/p:CoverletOutputFormat=\"json,cobertura\"" 

Чтобы объединить результаты в нескольких проектах, мы генерируем два выходных формата, json и cobertura.См. Параметр /p:CoverletOutputFormat.

. При создании покрытия кода для каждого проекта coverlet будет использовать /p:MergeWith для объединения coverlet.json для текущего проекта с предыдущим coverlet.json.

При таком подходе был получен один файл результатов cobertura для решения, которое мы могли бы использовать позже в нашей сборке CI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...