【问题标题】:Trying to Exclude Unit Tests from Code Coverage试图从代码覆盖中排除单元测试
【发布时间】:2018-08-18 00:15:45
【问题描述】:

我试图从代码覆盖率分析中排除单元测试项目/文件夹,因为它会夸大代码覆盖率。

我有不同的层/项目和每个单元测试项目。如下图。

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

如何排除名称/路径中包含“Test.*”的任何文件夹/项目?我想排除这些文件夹中的所有内容。

我已经尝试过以下模式(以及许多其他模式):

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

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

【问题讨论】:

  • 用“/”代替“\”重试
  • 我已经尝试过两种方式的斜线。不过,我会仔细检查并通知您。
  • 我已经用斜线向前和向后重试了排除项。两者都不起作用。它似乎不接受文件夹名称中的通配符。事实上,我看到的每个示例都只显示文件名/文件扩展名中的通配符。如果它不能处理文件夹名称中的通配符,那就太糟糕了。
  • 你可能是对的。我看到的唯一选择是检查source code。类似于“公共类 ExclusionFilters”
  • 这是 .NET 代码吗?如果是这样,你是如何分析的?测试项目应该是excluded automatically

标签: sonarqube nant


【解决方案1】:

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

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

它就像一个魅力!

【讨论】:

  • 我现在确实这样做了。但是,因为它不排除整个 Test 项目,所以 sonarQube 仍然会分析项目中文件名中没有“test”的其他类。我们有诸如包装器之类的东西,用于测试我们不希望报告代码覆盖率统计信息的抽象基类。我将查看 cmets 中提供的 G. Ann 链接到主要问题。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2018-10-09
    • 1970-01-01
    相关资源
    最近更新 更多