Почему инструмент тестирования 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