Почему инструмент тестирования dotnet не создает отчет о покрытии кода?

Моя структура проекта следующая:

.
├── Application
├── Application.Core
├── Application.Domain
├── Application.Tests
├── Application.IntegrationTests
└── README.md

И для запуска моего теста я использую следующий ввод:

dotnet test $folder.FullName -c Release --no-build /p:CoverletOutput='$root\coverage' /p:MergeWith='$root\coverage.json' /p:CoverletOutputFormat=opencover 

где $folder указывает на мой путь Application.Tests: C:\projects\coredemoapp\CoreDemoApp.Tests а также $root к C:\projects\coredemoapp\

Все тесты проходят успешно. Однако проблема в том, чтоcoverage.json ни coverage.opencover.xml файлы не создаются.

Я тоже пробовал использовать coverlet непосредственно с помощью следующей команды:

coverlet <path to test.dll> -
-target "dotnet" --targetargs "test --no-build" --merge-with $root\coverage.json --format opencover

, все работает на моем локальном компьютере с явным путем к dll. Но в случае запуска команды с предыдущим$folder.FullName как <path to assembly>, coverlet предполагает путь к отладочной dll, а не версию выпуска, как должно, и не работает.

Ссылка на полный скрипт сборки

1 ответ

По сути, я забыл добавить NuGet-пакет coverlet msbuild в свой тестовый проект. После этого все нормально работало с помощью следующей команды:

dotnet test $folder.FullName -c Release --no-build /p:CollectCoverage=true /p:CoverletOutput=$root\coverage /p:CoverletOutputFormat=opencover
Другие вопросы по тегам