试图从代码覆盖中排除单元测试

Trying to Exclude Unit Tests from Code Coverage

我试图从代码覆盖率分析中排除单元测试 projects/folders,因为它夸大了代码覆盖率。

我有不同的 layers/projects 和单元测试项目。如下图

Solution
  DataAccess
  Business
  Service
  Model
  Test.DataAccess
  Test.Business
  Test.Service
  Test.Model

如何排除 name/path 中包含 "Test.*" 的任何 folder/project?我想排除这些文件夹中的所有内容。

我尝试了以下模式(以及许多其他模式):

**\*Test.*\*
*Test.*\*
Test.*\*
**/*Test.*/*
*Test.*/*
Test.*/*

我无法排除单元测试文件。它似乎无法识别目录名称中的通配符。

我们遇到了类似的问题,我提到了文件名模式而不是文件夹名。所以我们的单元测试文件名以 test.cs 或 tests.cs 结尾。所以我添加了

**/*Tests.cs
**/*Test.cs

而且效果很好!

正如@G.Ann-SonarSourceTeam 和@Isaiah4110 所述,更好的解决方案是让 sonarQube 一起排除测试项目。我不确定为什么在我们的案例中默认情况下没有发生这种情况,但我们的解决方案是将 "SonarQubeTestProject" 属性 添加到 *.csproj 文件中。

<PropertyGroup>
  <SonarQubeTestProject>true</SonarQubeTestProject>
</PropertyGroup>