MStest + Coverlet 在 cli 中没有达到 100% 的覆盖率,但我在 codecov 中达到了 100%

问题描述 投票:0回答:1

我最近使用 C# .NET 8.0 项目从头开始创建了一个解决方案。

该项目仅涉及单元测试和隔离类,我打算将其作为算法练习的文件夹。

该项目使用 mstest 作为测试运行程序,使用 coverlet 作为覆盖率收集器。

我设置了项目的属性,以便它生成 lcov.info 格式的覆盖率输出:

    <!-- Coverage -->
    <CollectCoverage>true</CollectCoverage>
    <CoverletOutputFormat>lcov</CoverletOutputFormat>
    <CoverletOutput>./lcov.info</CoverletOutput>
    <IncludeTestAssembly>true</IncludeTestAssembly>

该项目只有一个类,只有一行方法。 另外,只有一个测试类和一种测试方法。

测试运行中涵盖了该行,但在 shell 摘要中我得到了:

+----------------------------+--------+--------+--------+
| Module                     | Line   | Branch | Method |
+----------------------------+--------+--------+--------+
| algorithm-exercises-csharp | 88.88% | 100%   | 66.66% |
+----------------------------+--------+--------+--------+

+---------+--------+--------+--------+
|         | Line   | Branch | Method |
+---------+--------+--------+--------+
| Total   | 88.88% | 100%   | 66.66% |
+---------+--------+--------+--------+
| Average | 88.88% | 100%   | 66.66% |
+---------+--------+--------+--------+

然后尝试验证哪一部分不会被覆盖。

通过 Visual Studio Code 中的 Coverage-gutters,我能够验证所有代码是否都已被覆盖。

然后将 lcov.info 的输出传送到 codecov。这里服务告诉我我的覆盖率是 100%。

为什么cli的结果不一样? 如何将 CLI 中的覆盖率提高到 100%?

使用的命令(在.sln级别):

dotnet test --verbosity normal

运行时和 SDK:

dotnet --version
8.0.204

依赖关系:

  <ItemGroup>
    <PackageReference Include="coverlet.collector" Version="6.0.2" />
    <PackageReference Include="coverlet.msbuild" Version="6.0.2">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
    <PackageReference Include="MSTest.TestAdapter" Version="3.3.1" />
    <PackageReference Include="MSTest.TestFramework" Version="3.3.1" />
  </ItemGroup>

IDE:

Visual Studio Code + C# 开发工具包

存储库: https://github.com/sir-gon/algorithm-exercises-csharp

c# .net mstest codecov coverlet
1个回答
0
投票

您似乎正在为

C:\Users\runneradmin\.nuget\packages\microsoft.net.test.sdk\17.9.0\build\netcoreapp3.1\Microsoft.NET.Test.Sdk.Program.cs
处的文件生成覆盖范围,该文件未被覆盖。如果删除这个文件再运行coverage,是不是显示为1005?

© www.soinside.com 2019 - 2024. All rights reserved.