如何使用“Dotnet dotcover test --dcFilters”命令从代码覆盖率中排除某些命名空间

Poo*_*rya 4 nunit dotcover .net-core

我在 gitlab-ci.yml 中使用 dotnet dotcover test 命令来获取代码覆盖率。我已将 dotcover dotnetclitool 版本 2020.3.3 包含在我的单元测试解决方案中,以便在管道测试阶段执行此命令。但我无法成功从代码覆盖率结果中排除某些类(在特定命名空间/文件夹下)。我的解决方案结构如下:

  1. 源文件夹
    • AClient.Repository.csproj
      • 扩展文件夹

        AClientExt.cs

      • 模型文件夹

        模型A.cs

        ModelB.cs

      • 存储库文件夹

        RepoA.cs

        RepoB.cs

  2. 测试文件夹
    • AClient.Repository.UnitTests.csproj
      • 存储库测试

        RepoATests.cs

现在代码覆盖率包括这两个解决方案,我想排除以下命名空间:

AClient.Repository.Extensions.*
AClient.Repository.Models.*
AClient.Repository.Tests.*
Run Code Online (Sandbox Code Playgroud)

我正在运行此命令,但它无法正确排除过滤器,因此有人可以帮助我找出 dcFilters 的正确用法: 代码覆盖率

Poo*_*rya 7

我最终是这样解决的:

run-testCoverage:
  stage: dotnet-test
  image: mcr.microsoft.com/dotnet/core/sdk:3.1
  before_script:
    - cd tests/AClient.Repository.UnitTests
  script:
    - dotnet restore -v d
    - dotnet dotcover test --dcReportType=HTML --dcOutput=../../coverage/AppCoverageReport.html --dcFilters="+:AClient.Repository;-:type=AClient.Repository.Extensions.*;-:type=AClient.Repository.Models.*;-:type=AClient.Repository.UnitTests"
Run Code Online (Sandbox Code Playgroud)

这是帮助我的答案:https ://stackoverflow.com/a/6208644/11731377