【问题标题】:Code Coverage subjects third party code to coverage代码覆盖率使第三方代码受到覆盖
【发布时间】:2014-12-04 18:10:04
【问题描述】:

在我正在处理的项目中,如果我没有在 runsettings 文件中明确排除它们,则代码覆盖范围内包含两个 nuget 包,而其他第三方库则没有。

这似乎是因为有问题的包在构建时会在单元测试项目的bin文件夹中生成一个PDB文件。

为什么有些软件包有 PDB 文件,而有些则没有?有没有办法在没有 PDB 的情况下获取 NuGet 包?

有没有办法将第三方库排除在代码覆盖范围之外?

【问题讨论】:

  • 如果您不想对这些 PDB 进行覆盖检测,您就不能删除或重命名这些 PDB 吗?
  • Nuget 包不生成文件,它们包含文件。如果开发人员决定在给定的包中分发 PDB 文件,这就是您所得到的。正如您所说可以排除它们,您要解决什么问题?
  • @500-InternalServerError 绝对是,但是在构建测试项目时(在一组测试运行之前),它们会被重新创建......
  • @BenRobinson 在我们测量代码覆盖率的项目中(不要问为什么),可以这么说,这些会弄乱统计数据。我不希望这成为每个 nuget 包添加的额外可能任务。很高兴知道它们是否包含在包装中。现在我知道运行设置文件可能是实现这一目标的唯一方法。
  • 你应该在这里认真地重新考虑你的问题的标题。请注意,您最终在 OP 末尾提出的问题根本不是标题所暗示的。您似乎还在那里问了两个问题,所以我也考虑将您的问题分成两个。

标签: c# visual-studio unit-testing code-coverage pdb-files


【解决方案1】:

发现可以使用.runsettings 文件来排除库。

这些可以在 TFS 构建定义中使用,或者通过设置在 Visual Studio 中使用:

测试 > 测试设置 > 选择测试设置文件

排除库的运行设置文件示例如下:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <ModulePaths>
              <Include>
                <ModulePath>.*Namespace.*.dll$</ModulePath>
              </Include>
              <Exclude>
                <ModulePath>.*fluentassertions.*</ModulePath>
                <ModulePath>.*htmlagilitypack.*</ModulePath>
              </Exclude>
            </ModulePaths>
            <Attributes>
              <Exclude>
                <Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
              </Exclude>
            </Attributes>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    • 2018-01-11
    • 1970-01-01
    • 2016-11-29
    • 2017-05-03
    • 2012-05-04
    • 2018-07-10
    相关资源
    最近更新 更多