Я пытаюсь настроить покрытие кода в нашем веб-приложении ASP.NET Core 2.0. Я использую dotcover (от JetBrains), чтобы обеспечить покрытие кода во всех других моих сборках (путем запуска dotcover из командной строки во время процесса сборки).
Когда я запускаю dotcover с нашего сервера сборки для нашего веб-приложения .NET Core 2.0, я вижу это.
В нем говорится, что он работал успешно, но затем просто зависает и файлы покрытия кода не создаются.
dotcover analyse /TargetExecutable:"C:\Program Files\dotnet\dotnet.exe" /TargetArguments:"test MyUnitTests.csproj" /Output:report.html /ReportType:HTML /LogFile=dotcover.log
Если я попытаюсь добавить коллекцию покрытия кода, я увижу это.
dotcover analyse /TargetExecutable:"C:\Program Files\dotnet\dotnet.exe" /TargetArguments:"test MyUnitTests.csproj --collect:coverage" /Output:report.html /ReportType:HTML /LogFile=dotcover.log
И, наконец, если я запустил тест dotnet самостоятельно (без dotcover), он, похоже, сработал, но снова не создается никакого вывода покрытия.
dotnet test "MyUnitTests.csproj" -- collect:coverage
Я не уверен, как сгенерировать покрытие кода для приложения .NET Core 2.0, и не знаю, как / что такое сборщики данных и как их следует использовать. Является ли dotcover сборщиком данных в этом примере?
По сути, я просто хочу создать покрытие кода для приложения .NET Core 2.0.
ОБНОВЛЕНИЕ:
В соответствии с предложением я установил coverlet в качестве альтернативы dotcover. У меня он работает, но ведет себя непоследовательно. Когда я запускаю свой командный файл с сервера, все в порядке.
Но при запуске из TFS выдает ошибку.
System.IO.FileNotFoundException: в. Убедитесь, что в тестовом проекте есть ссылка nuget на пакет «Microsoft.NET.Test.Sdk» и правильные настройки версии платформы, и повторите попытку.
В моем проекте есть ссылка на эту сборку (она устанавливается по умолчанию самой VS при создании проекта модульного тестирования).
Почему TFS жалуется на эту сборку, если она определенно существует и может быть запущена вручную из командной строки без ошибок?