Почему инструмент тестирования dotnet не создает отчет о покрытии кода? - PullRequest
0 голосов
/ 02 ноября 2019

Структура моего проекта следующая:

.
├── 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 указывает на мое приложениеПуть к тестам: 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 предполагает путь к debug dll, а не release версии, как это должно быть и происходит сбой.

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

1 Ответ

0 голосов
/ 05 ноября 2019

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

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