3

我正在使用 linux 机器内的 VS 代码处理 dotnet 核心项目。

以下博客生成覆盖率报告: https ://www.hanselman.com/blog/AutomaticUnitTestingInNETCorePlusCodeCoverageInVisualStudioCode.aspx

如前所述,我通过 dotnet 测试参数如下:

dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./lcov.info

并期望生成 lcov.info 文件,但事实并非如此。

我在这里错过了什么吗?

ps:我已经包含了这个包

 <PackageReference Include="coverlet.collector" Version="1.3.0">
  <PrivateAssets>all</PrivateAssets>
  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
4

1 回答 1

4

我曾经有过确切的问题。Hanselman 的指南从未明确指示读者coverlet.msbuild需要包来指示 .NET 使用/p:语法收集代码覆盖率。通过在测试项目文件夹中执行以下命令来包含coverlet.msbuild在测试项目中:

dotnet add package coverlet.msbuild

测试项目的*.csproj文件应包含类似于以下的语句:

<PackageReference Include="coverlet.msbuild" Version="2.9.0"
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
    <PrivateAssets>all</PrivateAssets>
</PackageReference>

通过此修复,当我运行与您发布的完全相同的命令时,VSCode 的 Coverage Gutters 扩展对我来说是开箱即用的。

于 2020-10-02T13:25:41.740 回答